c - C 混淆中的结构

标签 c struct typedef

我有一个 c 文件,它以我正在调用的 stringtable 结构开头,看起来像这样

struct stringtable {
   int table[];
   int numElements = 15;
};

我有一个标题,它有这个 typedef

typedef stringtable *stringtable_ref;

当我用 gcc 编译时,我得到了错误: 预期的标识符或 '(' 在 '[' 标记之前 预期的 ':' 在 'int' 之前

就像我声明的结构错误一样。我以前在 C 中做过这样的结构,所以我的问题是:我在声明我的结构时犯了错误吗?分号前需要有标签吗?是否只有某些地方允许我声明结构?

最佳答案

struct stringtable {
   int table[];
   int numElements = 15;
};

int table[]; 这样的灵活数组成员只能是 structlast 成员(至少还有一个成员).

并且您不能在 struct 声明中为成员分配默认值,C 不支持。

关于c - C 混淆中的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12697434/

相关文章:

c++ - C++ 中的 Typedef 枚举

c - C中 'static'函数关键字与返回类型说明符的顺序

c - 如何格式化设备数据表中的 I2C 数据?

c - while 循环 != 字符串 C

c - 对结构使用 malloc 时出错

python - 将 4 个整数打包为一个字节?

c - header 中的 typedef 结构和取消引用指向不完整类型的指针

c - 在 C 中重复输入数据的结构

c - 如何将struct pointer的指针域全部初始化为NULL?

c - C 中可变大小结构的不完整类型