假设我有一个结构定义为:
typedef struct _TStruct {
uint Values[3];
} TStruct;
然后我定义了一个结构数组:
TStruct Data[3];
如何正确初始化此结构数组中的数组?
最佳答案
要正确初始化结构数组中的数组,您需要执行以下操作:
typedef struct _TStruct {
uint Values[3];
} TStruct;
TStruct Data[3] = {
{{ 0x86, 0x55, 0x79 }}, {{ 0xaa, 0xbb, 0xcc }}, {{ 0x76, 0x23, 0x24 }}
};
注意每组值周围的双括号。额外的一对大括号对于避免出现以下 gcc 错误是必不可少的(仅当存在 -Wall
标志时,它恰好被 gcc
-Wmissing-“检测到”花括号
flag):
warning: missing braces around initializer
注意:
双括号
{{ }}
的使用不会改变内存中数据的布局此警告不会出现在 MS Visual Studio C++ 编译器上
另请参阅:
关于c - 如何在结构数组中初始化数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42332666/