c - 声明一个结构数组

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

最佳答案

长话短说

要么改变你的结构定义

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 之后使用的名称所在的位置)与全局命名空间(其中文件范围 typedefed 名称驻留)。

许多程序员觉得拖着 struct 标签 类型名称很麻烦,您应该始终为结构名称做一个 typedef。 Others觉得这是对 typedef-ing 的滥用,并且关键字传达了很多含义;对他们来说,typedef 是语法糖,没有任何真正的抽象。

无论选择哪种方式编写代码,请坚持使用,不要混淆这两个命名空间。

关于c - 声明一个结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43831826/

相关文章:

C 信号处理中的 Ctrl-C 问题

c - 如何在C中编辑文本文件的特定行

python - 从python中的一个圆圈中获取数据

c - 表达式必须具有结构或 union 类型

c - 如何在 C 中使用零长度数组

c - 从传递给函数的结构中写入成员会产生意外结果

c - 在父进程和子进程之间共享用于 stdio 缓冲的缓冲区是否合法?

c - C 中的 void display_board(enum cell_contents board[][BOARDWIDTH])

c - 如何对 char 字符串/数组使用 malloc() 函数?

arrays - matlab数组赋值