使用宏初始化结构

dim*_*v.l 5 c macros struct

我一直在寻找,找不到任何东西.考虑这个结构

typedef struct student
{
    char name[40];
    char grade;
}Student;
Run Code Online (Sandbox Code Playgroud)

如何使用参数初始化结构的宏?有点像

Student John = STUDENT(John, A); 
Run Code Online (Sandbox Code Playgroud)

其中STUDENT是一个定义的宏

kel*_*tar 8

#define STUDENT(name, grade) { #name, grade }
Run Code Online (Sandbox Code Playgroud)

然后Student John = STUDENT(John, 'A');将扩展到

Student John = { "John", 'A' };
Run Code Online (Sandbox Code Playgroud)

  • 要求代码具有`STUDENT("John","A")`是更好的风格 (2认同)
  • 它适用于初始化,而不是分配(例如,不是'学生约翰;约翰=学生(约翰,'A');`).我记得,只允许在C99或更高版本中进行结构分配. (2认同)