声明一个结构数组

时间:2017-05-07 13:03:23

标签: c arrays struct declare

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

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

typedef struct {
char data[MAX_WORD_SIZE];     
int total_count;       
Occurrence_t reference[MAX_FILES];    
int nfiles;         
} Word_t;

struct Word_t array[a];

2 个答案:

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

它会起作用