我有一个 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[];
这样的灵活数组成员只能是 struct
的last 成员(至少还有一个成员).
并且您不能在 struct
声明中为成员分配默认值,C 不支持。
关于c - C 混淆中的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12697434/