c++ - Clang 警告 "-Wsigned-enum-bitfield"的含义

标签 c++ clang portability bit-fields

<分区>

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

关于c++ - Clang 警告 "-Wsigned-enum-bitfield"的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45215974/

相关文章:

c++ - SPOJ 简单动态规划中的 SIGSEGV 错误

hardware - RAID 1是否可以在不同的RAID Controller 之间移植?

c# - 将 C# (.NET 2.0) 应用程序部署为可移植应用程序?

C++ HTTP 请求

c++ - 使用绝对元素编号访问二维数组的元素

c - 关闭多字符持续警告

c++ - Kext 编译良好,符号未定义

c++ - Clang 格式的换行符

C - Windows 和 Unix 上的可移植代码

c++ - 从字符串中随机选择特定子序列