extern struct array error:数组类型具有不完整的元素类型

时间:2017-12-25 07:09:21

标签: c struct typedef extern

我有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;

struct _info替换为INFO个文件中的.c。 然后编译好。

但是为什么 typedef做什么?

1 个答案:

答案 0 :(得分:1)

感谢大家的帮助。这个问题最终导致main.c拼写错误。 类似的东西:

extern struct _infoo info[];

typedef替换它们时,一切都工作正常。