Clang 警告“-Wsigned-enum-bitfield”的含义
Meaning of Clang warning "-Wsigned-enum-bitfield"
请向我解释“-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 编译此代码时,我收到以下警告:
enums in the Microsoft ABI are signed integers by default; consider
giving the enum Qt::AlignmentFlag
an unsigned underlying type to make this code
portable
Enum Qt::AlignmentFlag
在我的代码之外,我无法更改它。我倾向于简单地忽略这个警告。如果我保留此代码原样,可能发生的最坏情况是什么?
如果枚举使用了所有 9 位,读回时会得到一个负数。将它与其他值进行比较时可能会给您带来问题。
请向我解释“-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 编译此代码时,我收到以下警告:
enums in the Microsoft ABI are signed integers by default; consider giving the enum
Qt::AlignmentFlag
an unsigned underlying type to make this code portable
Enum Qt::AlignmentFlag
在我的代码之外,我无法更改它。我倾向于简单地忽略这个警告。如果我保留此代码原样,可能发生的最坏情况是什么?
如果枚举使用了所有 9 位,读回时会得到一个负数。将它与其他值进行比较时可能会给您带来问题。