假设我有一个结构定义为:如何初始化数组中的数组?
typedef struct _TStruct {
uint Values[3];
} TStruct;
然后我定义的结构数组:
TStruct Data[3];
如何正确初始化数组数组结构的?
假设我有一个结构定义为:如何初始化数组中的数组?
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
-Wmissing-braces
标志,只有当-Wall
标志存在,正是它的“检测”)得到一个以下的gcc错误:
警告:围绕初始化缺少大括号
注意:
双括号的使用{{ }}
不改变布局在存储器
数据的此警告不会出现在MS的Visual Studio C++编译
参见:
您提供的问答与您提供的相关问答的副本相同。为什么张贴那么? –
@ Jean-FrançoisFabre没有关于如何初始化数组的数组结构数组的问题/答案 –
请注意,根据C标准省略大括号也是正确的。额外的支撑只是“需要”来解决编译器缺陷。 –
所引用的DUP和[ GCC 53119 bug](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53119)好像是surfac e使用缺少花括号的'{0}'时。这个问题似乎没有以这种方式进行初始化。 – jww