请向我解释“ -Wsigned-enum-bitfield”叮lang警告的含义。
在我的代码中,我定义了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
是我的代码的外部,我不能更改它。我倾向于不理会这个警告。如果我将这段代码保持原样,最糟糕的情况是什么?
如果枚举全部使用了9位,则在读回时会得到一个负数。与其他值进行比较时可能会给您带来问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句