我使用的工具产生以下输出:
#define VAR { {1, {2,3}}, {2, {5,1,2,3,4}}, {1, {1}} }
我想在我的程序中使用它。问题是如何正确使用它。
我的第一种方法是这样的:
#define VAR { {1, {2,3}}, {2, {5,1,2,3,4}}, {1, {1}} }
#include <stdio.h>
typedef struct vars {
int first;
int second[];
} vars;
int main( int argc, char** argv ) {
vars allvars[] = VAR;
printf("%i\n",allvars[0].second[0]);
return 0;
}
但是gcc不喜欢它:
错误:在嵌套上下文中初始化灵活数组成员
我的第二种方法是关于3d阵列:
#define VAR { {1, {2,3}}, {2, {5,1,2,3,4}}, {1, {1}} }
#include <stdio.h>
int main( int argc, char** argv ) {
int allvars[3][2][2] = VAR;
printf("%i\n",allvars[1][1][3]);
return 0;
}
编译器的类似反应:
警告:标量初始化器周围的大括号
有谁知道如何处理它?甚至可以使用初始化列表(例如给定的列表),还是有人知道一个很好的黑客来处理这个问题?