我们假设我的结构定义为:
typedef struct _TStruct {
uint Values[3];
} TStruct;
然后我定义了一个结构数组:
TStruct Data[3];
如何正确初始化此结构数组中的数组?
答案 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
标志“检测到”:
警告:初始化程序周围缺少大括号
注意:
使用双括号{{ }}
不会改变内存中数据的布局
此警告未出现在MS Visual Studio C ++编译器
另见: