声明一个结构数组
我正在尝试创建一个结构数组,但它出现了这个错误:
“错误,数组类型为不完整的元素类型”
typedef struct { char data[MAX_WORD_SIZE]; int total_count; Occurrence_t reference[MAX_FILES]; int nfiles; } Word_t; struct Word_t array[a];
TL; DR
要么改变你的结构定义
struct Word_t { char data[MAX_WORD_SIZE]; int total_count; Occurrence_t reference[MAX_FILES]; int nfiles; };
或(而不是两者),数组声明:
Word_t array[a];
你所做的是定义一个未命名的结构,你给了一个带有typedef的替代名称。 没有struct Word_t
,只定义了Word_t
类型。
标记命名空间(在struct
/ union
/ enum
驻留之后使用的名称)与全局命名空间(文件范围类型定义名称所在的位置)分开。
许多程序员认为拖拽struct tag
类型名称很麻烦,你应该总是为struct name做一个typedef。 其他人认为这是对类型定义的滥用,并且该关键字传达了很多含义; 对他们来说,typedef是没有任何真正抽象的语法糖。
无论您选择何种方式为您编写代码,坚持使用它,并且不要混淆这两个名称空间。
您首先使用的是typedef,因此您不再需要编写该结构。 看这里
typedef struct { char data[MAX_WORD_SIZE]; int total_count; Occurrence_t reference[MAX_FILES]; int nfiles; } Word_t; Word_t array[a];
它会工作