在头文件中,我有一个结构:
#ifndef _MY_STRUCT_
#define _MY_STRUCT_
struct myStruct{
char c1[1];
char c2[10];
char c3[10];
}
typedef myStruct MYSTRUCT;
#endif
在另一个头文件中这个结构:
#include "my_struct.h"
struct another_struct{
int val1;
MYSTRUCT strct;
};
编译此代码时,我收到以下消息:
The text "strct" is unexpected. MYSTRUCT may be undeclared or ambiguous.
对我来说,两个结构都很好。我无法理解为什么编译器会抱怨这个。
感谢您的帮助。
答案 0 :(得分:9)
您应该在typedef
时遇到错误,因为您错过了struct
关键字。它应该是
typedef struct myStruct MYSTRUCT;
// ^^^^^^
// Note the `struct` keyword here
结构末尾缺少的分号不会让编译器更快乐。
答案 1 :(得分:5)
这就是我认为它应该如何完成
#ifndef _MY_STRUCT_
#define _MY_STRUCT_
typedef struct {
char c1[1];
char c2[10];
char c3[10];
} MYSTRUCT;
#endif
,另一个文件保持不变。