我目前正在处理遗留的C++代码,该代码成功地使用gcc 2.9.X编译。
我被要求将这个遗留代码移植到gcc 3.4.X。大多数错误都很容易纠正,但是这个特定的错误让我感到困惑。
背景:
struct TMessage
{
THeader header;
TData data;
};
struct THeader
{
TEnum myEnum;
TBool validity;
};
做了什么:
const TMessage init = {{0}};
/* Later in the code ... */
TMessage message = init;
我的问题:
{{}}运算符的含义是什么?它是否将第一个字段(即标题)初始化为二进制0?它是否将第一个结构(即enum)的第一个字段初始化为(文字)0?
我遇到的3.4.6错误是invalid conversion from 'int' to 'TEnum'
,无论使用一对还是两对花括号都会出现。
如何在不使用memset的情况下将我的结构设置为一堆0?
提前致谢。