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 位,读回时会得到一个负数。将它与其他值进行比较时可能会给您带来问题。