我正在尝试创建一个结构数组,但它出现了这个错误:
“错误,数组类型为不完整的元素类型”
typedef struct {
char data[MAX_WORD_SIZE];
int total_count;
Occurrence_t reference[MAX_FILES];
int nfiles;
} Word_t;
struct Word_t array[a];
答案 0 :(得分:3)
<强> 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
之后使用的名称所在的位置)与全局命名空间(文件范围typedef
编辑名称分开)驻留)。
许多程序员认为拖拽struct tag
类型名称很麻烦,你应该总是为struct name做一个typedef。 Others认为这是对类型定义的滥用,并且该关键字传达了很多含义;对他们而言,typedef是没有任何真正抽象的语法糖。
无论您选择何种方式为您编写代码,请坚持使用,并且不要混淆这两个名称空间。
答案 1 :(得分:0)
您首先使用的是typedef,因此您不再需要编写该结构。看这里
typedef struct {
char data[MAX_WORD_SIZE];
int total_count;
Occurrence_t reference[MAX_FILES];
int nfiles;
} Word_t;
Word_t array[a];
它会起作用