C++ “叮当声警告”的含义-Wsigned enum位字段“;
请向我解释“-Wsigned enum bitfield”叮当警告的含义 在我的代码中,我得到了带有位字段的C++ “叮当声警告”的含义-Wsigned enum位字段“;,c++,clang,portability,bit-fields,C++,Clang,Portability,Bit Fields,请向我解释“-Wsigned enum bitfield”叮当警告的含义 在我的代码中,我得到了带有位字段的结构的定义: struct Options { BackgroundType backgroundType : 2; LineSpace lineSpace : 2; bool letterSpacing : 1; bool shadow : 1; Qt::AlignmentFlag alignment : 9; } options; option
结构的定义:
struct Options {
BackgroundType backgroundType : 2;
LineSpace lineSpace : 2;
bool letterSpacing : 1;
bool shadow : 1;
Qt::AlignmentFlag alignment : 9;
} options;
options.alignment = Qt::AlignLeft;
使用Clang编译此代码时,我收到以下警告:
Microsoft ABI中的枚举默认为有符号整数;考虑
为enumQt::AlignmentFlag
提供一个未签名的基础类型以生成此代码
便携式
EnumQt::AlignmentFlag
在我的代码之外,我无法更改它。我倾向于忽略这个警告。如果我将此代码保持原样,会发生什么最糟糕的情况?如果枚举使用了所有9位,则在读回它时会得到一个负数。当将其与其他值进行比较时,可能会给您带来问题。@BoPersson请提供答案。我认为建议的副本已经表明了这种情况。