typedef可能是未声明或含糊不清的

lea*_*ner 3 c struct

在头文件中,我有一个结构:

#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)

对我来说,两个结构都很好.我无法理解为什么编译器会抱怨这个.

感谢帮助.

Som*_*ude 9

你也应该得到一个错误typedef,因为你错过了struct那里的关键字.它应该是

typedef struct myStruct MYSTRUCT;
//      ^^^^^^
// Note the `struct` keyword here
Run Code Online (Sandbox Code Playgroud)

并且结构末尾缺少的分号不会让编译器更快乐.


Ita*_*ela 5

这是我认为它应该如何完成

#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)

而另一个文件保持不变.