在结构

时间:2015-09-07 07:06:26

标签: c arrays struct

我宣布了2个结构:

typedef struct
{
  int a;
  int b;
}ma_Struct;

typedef struct
{
  int x;
  ma_Struct tab[2];
}maStruct_2;

目标是初始化maStruct_2的实例,所以我做的是:

int main()
{
 ma_Struct elm1={0,1};
 ma_Struct elm2={1,2};

 ma_Struct tab_Elm[2]={elm1,elm2};
 maStruct_2 maStruct_2_Instance={1,tab_Elm};

return 0;
}

但是我在初始化程序中得到了警告缺少括号,我尝试了这种语法

maStruct_2 maStruct_2_Instance={1,{tab_Elm}};

但会出现相同的警告。 你能帮我吗

1 个答案:

答案 0 :(得分:1)

在C中,您不能使用另一个数组名称作为初始化程序来初始化数组。

因此错误与结构本身无关,也与范围或常量表达式无关。

修复你的代码:

maStruct_2 maStruct_2_Instance = {1, {elm1, elm2}};