在结构体中初始化一个数组

4

我已经声明了两个结构体:

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个回答

1
在C语言中,你不能使用另一个数组名称作为初始化器来初始化数组。
因此,错误与结构体本身无关,也与作用域或常量表达式无关。
将你的代码修复如下:
maStruct_2 maStruct_2_Instance = {1, {elm1, elm2}};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接