我正在尝试创建一个结构数组,但出现了这个错误:
“错误,数组类型为不完整的元素类型”
typedef struct {
char data[MAX_WORD_SIZE];
int total_count;
Occurrence_t reference[MAX_FILES];
int nfiles;
} Word_t;
struct Word_t array[a];
最佳答案
长话短说
要么改变你的结构定义
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
ed 名称驻留)。
许多程序员觉得拖着 struct 标签
类型名称很麻烦,您应该始终为结构名称做一个 typedef。 Others觉得这是对 typedef-ing 的滥用,并且关键字传达了很多含义;对他们来说,typedef 是语法糖,没有任何真正的抽象。
无论选择哪种方式编写代码,请坚持使用,不要混淆这两个命名空间。
关于c - 声明一个结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43831826/