尝试通过头文件中的结构内的“typedef”声明别名时出现此错误:
错误:在‘typedef’之前需要说明符限定符列表
我最初的意图是测试 typedef 的范围是否包含在结构中。这样一来,如果此 header 要包含在另一个源文件中,我可以防止不必要地使用此别名。如果我将有问题的行(以“typedef”开头的行)移到结构之外和它之前,代码将编译。
但是,我不明白为什么我不能从结构中调用 typedef,而我却得到上述错误。
此外,我不确定这种做法是否真的有必要。如果有的话,限制别名有什么好处?
#ifndef STUDENT_H
#define STUDENT_H
typedef struct{
typedef char* string;
string name;
int id;
} Student;
#endif
我希望代码能够编译,但我却收到错误消息:
error: expected specifier-qualifier-list before ‘typedef’
最佳答案
typedef
中不能有 typedef
。
你可以拥有:
typedef char* string;
然后使用它:
typedef struct{
string name;
int id;
} Student;
请注意 string
只是一个指针,它必须“指向”已分配的内存才能使用它(尤其是在写入之前)。
However, I don't understand why I couldn't call typedef from within the struct
从那时起,这就是 C 的工作方式,每个人都对它很好。你将不得不学会接受这种“限制”。
关于c - 尝试在结构 : why do I get an error, 中使用 typedef,这首先是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57005123/