struct dataStruct { const char* s; int num; };
struct Final_struct { int n; dataStruct a[]; };
现在当我尝试初始化Final_struct时出现问题:
const Final_struct Example[]= {
{100, { {"age", 20}, {"iq", 120}, {"bmi",26} } },
{100, { {"age", 36}, {"iq", 145}, {"bmi",22} }}
};
这是一个c代码,当我尝试编译时会给出编译错误:
Fields of the object can not have arrrays of size 0
有什么建议吗?
谢谢。答案 0 :(得分:5)
dataStruct a[]
将结构的成员定义为大小为0
的数组。这几乎没用。您需要在struct
的定义中指定其大小,因为编译器需要提前知道整个struct
的大小。
或者,您只需将字段声明为dataStruct *a
,然后数组本身就不会包含在struct
中。
答案 1 :(得分:1)
如果这是C,那么string
是什么?为什么你希望能够从看起来像其他变量的东西初始化它?
为const char *
尝试s
,并从引用的字符串文字进行初始化。
答案 2 :(得分:0)
“年龄”
答案 3 :(得分:0)
您是否尝试在字符串常量周围加上双引号?
答案 4 :(得分:0)
有什么建议吗?
尝试:
/* note the explicit array size for a[] */
struct Final_struct { int n; struct dataStruct a[3]; };
答案 5 :(得分:0)
在名为Final_struct的结构中声明的数组'a'应该具有大小。如果知道该变量的大小,编译器就无法为该变量分配内存。所以你应该首先分配大小...