使用C中的typedef初始化结构的3d数组/数组

时间:2015-02-05 19:13:51

标签: c arrays struct c-preprocessor

我使用的工具产生以下输出:

#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;
}

编译器的类似反应:

  

警告:标量初始化器周围的大括号

有谁知道如何处理它?甚至可以使用初始化列表(例如给定的列表),还是有人知道一个很好的黑客来处理这个问题?

0 个答案:

没有答案