2014-07-24 13 views
3

검색을했는데 아무 것도 찾을 수 없습니다. 이 구조를 고려하십시오매크로를 사용하여 구조체 초기화

typedef struct student 
{ 
    char name[40]; 
    char grade; 
}Student; 

매개 변수가있는 구조체를 초기화하는 매크로는 어떻게 작성합니까? 매크로를 사용하는 것이 왜 학생이 매크로 정의

Student John = STUDENT(John, A); 

의 라인을 따라 뭔가 그런 Student John = STUDENT(John, 'A');

+3

로 확장 될 것인가? 단순히 함수를 사용하여 '학생'을 초기화 할 수도 있습니다. – Codor

+0

내가 그런 식으로 할 것을 말했기 때문에 –

+0

글쎄, 그래도 나는 조금 놀랍다. – Codor

답변

6
#define STUDENT(name, grade) { #name, grade } 

Student John = { "John", 'A' }; 
+0

이 작품은 고맙지 만 왜 어떻게 읽을 수 있습니까? –

+2

'STUDENT ("John", 'A')' –

+0

@ dimitrov.l을 갖는 코드를 요구하는 것이 더 좋은 스타일입니다. 왜'= {}'로 구조체를 초기화 할 수 있는지, 선? – keltar

0
#include <stdio.h> 

typedef struct student 
{ 
    char name[40]; 
    char grade; 
}Student; 

#define STUDENT(name, grade) (Student){ #name, *#grade } 

int main(){ 
    Student John = STUDENT(John, A); 

    printf("%s, %c\n", John.name, John.grade); 
    return 0; 
}