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