我有3个文件:main.c
,def.c
,def.h
。这两个.c
文件都包含def.h
。
所有文件都在同一目录中。
我的编译器是 gcc版本4.9.2 。
在 def.h :
struct _info {
int a;
};
在 def.c :
#include "def.h"
struct _info info[] = {};
在 main.c :
#include "def.h"
extern struct _info info[];
当我将def.c
构建为目标文件,然后使用main.c
进行构建时:
gcc -c def.c
gcc main.c def.o
我收到一条错误消息:数组类型的元素类型不完整
如果我使用typedef
将struct _info
定义为INFO
,请执行以下操作:
typedef struct _info INFO;
将struct _info
替换为INFO
个文件中的.c
。
然后编译好。
但是为什么和 做typedef
做什么?
答案 0 :(得分:1)
感谢大家的帮助。这个问题最终导致main.c
拼写错误。
类似的东西:
extern struct _infoo info[];
当typedef
替换它们时,一切都工作正常。