声明一个结构数组

我正在尝试创建一个结构数组,但它出现了这个错误:

“错误,数组类型为不完整的元素类型”

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]; 

它会工作