我有一个c文件,它以一个我称之为stringtable的结构开头,看起来像这样。
struct stringtable {
int table[];
int numElements = 15;
};并且我有它的头文件,它有这个类型定义函数
typedef stringtable *stringtable_ref;当我用gcc编译时,我得到了错误:预期的标识符或'(‘之前的'[’令牌预期的':‘’在'int‘之前
就像我声明结构是错误的一样。我以前在C中做过这样的结构,所以我的问题是:我声明我的结构是不是错了?它需要在分号之前有一个标签吗?是否只允许我在某些地方声明结构?
发布于 2012-10-03 04:06:14
struct stringtable {
int table[];
int numElements = 15;
};像int table[];这样的灵活数组成员只能是struct的最后一个成员(至少还有一个成员)。
而且您不能在struct声明中为成员赋值,C不支持这一点。
发布于 2012-10-03 04:06:20
除非结构中有static成员,否则不能在声明时初始化成员。
在初始化成员之前,您需要创建一个结构实例:
struct stringtable str_table;
str_table.numElements = 15;
//etc发布于 2012-10-03 04:13:42
我还希望您在header typedef struct stringtable *stringtable_ref中需要
https://stackoverflow.com/questions/12697434
复制相似问题