请向我解释" -Wsigned-enum-bitfield" Clang警告。
在我的代码中,我得到了一个带有位域struct
的定义:
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中的枚举是有符号整数;考虑 为枚举
Qt::AlignmentFlag
提供一个无符号的基础类型来生成此代码 便携
枚举Qt::AlignmentFlag
是我的代码的外部,我无法更改它。我倾向于忽略这个警告。如果我保留此代码,可能会发生的最糟糕的事情是什么?
答案 0 :(得分:1)
如果枚举使用全部9位,则在读取时会得到负数。在将其与其他值进行比较时,可能会给您带来问题。