2017-02-19 75 views
0

假设我有一个结构定义为:如何初始化数组中的数组?

typedef struct _TStruct { 

    uint Values[3]; 

} TStruct; 

然后我定义的结构数组:

TStruct Data[3]; 

如何正确初始化数组数组结构的?

+0

所引用的DUP和[ GCC 53119 bug](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53119)好像是surfac e使用缺少花括号的'{0}'时。这个问题似乎没有以这种方式进行初始化。 – jww

回答

2

要在你需要做以下结构的数组正确初始化数组:

typedef struct _TStruct { 

    uint Values[3]; 

} TStruct; 

TStruct Data[3] = { 

    {{ 0x86, 0x55, 0x79 }}, {{ 0xaa, 0xbb, 0xcc }}, {{ 0x76, 0x23, 0x24 }} 

}; 

注重周围的每一个组值的双重支撑。另外一对大括号是必不可少的,以避免(由gcc-Wmissing-braces标志,只有当-Wall标志存在,正是它的“检测”)得到一个以下的gcc错误:

警告:围绕初始化缺少大括号

注意

  1. 双括号的使用{{ }}不改变布局在存储器

  2. 数据的此警告不会出现在MS的Visual Studio C++编译

参见:

How to repair warning: missing braces around initializer?

GCC Bug 53319

+0

您提供的问答与您提供的相关问答的副本相同。为什么张贴那么? –

+0

@ Jean-FrançoisFabre没有关于如何初始化数组的数组结构数组的问题/答案 –

+0

请注意,根据C标准省略大括号也是正确的。额外的支撑只是“需要”来解决编译器缺陷。 –