如何在结构数组中初始化数组?

时间:2017-02-19 20:46:05

标签: c arrays gcc struct initialization

我们假设我的结构定义为:

typedef struct _TStruct {

    uint Values[3];

} TStruct;

然后我定义了一个结构数组:

TStruct Data[3];

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

1 个答案:

答案 0 :(得分:2)

要正确初始化结构数组中的数组,您需要执行以下操作:

typedef struct _TStruct {

    uint Values[3];

} TStruct;

TStruct Data[3] = {

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

}; 

注意每组价值观的双重支撑。额外的一对大括号对于避免出现以下gcc错误至关重要(仅当-Wall标志存在时,恰好由gcc -Wmissing-braces标志“检测到”:

  

警告:初始化程序周围缺少大括号

注意

  1. 使用双括号{{ }}不会改变内存中数据的布局

  2. 此警告未出现在MS Visual Studio C ++编译器

  3. 另见:

    How to repair warning: missing braces around initializer?

    GCC Bug 53319