extern struct array error: array type has incomplete element type

extern struct array error: array type has incomplete element type

我有 3 个文件:main.cdef.cdef.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

我收到一条错误消息:数组类型的元素类型不完整


如果我使用 typedefstruct _info 定义为 INFO,例如:

typedef struct _info INFO;

并在 .c 文件中将 struct _info 替换为 INFO。 那就编译好了。

但是为什么typedef做什么?

感谢大家的帮助。这个问题以 main.c 中的拼写错误结束。 类似于:

extern struct _infoo info[];

typedef替换它们时,肯定一切正常。