2017-07-20 48 views
3

请向我解释“-Wigned-enum-bitfield”Clang警告的含义。Clang警告的含义“-Wigned-enum-bitfield”

在我的代码我有一个struct的定义与位域:

struct Options { 
    BackgroundType backgroundType : 2; 
    LineSpace lineSpace : 2; 
    bool letterSpacing : 1; 
    bool shadow : 1; 
    Qt::AlignmentFlag alignment : 9; 
} options; 

options.alignment = Qt::AlignLeft; 

当编译此代码铛,我得到以下警告:

枚举在Microsoft ABI默认情况下是有符号整数;考虑 给枚举Qt::AlignmentFlag一个无符号的基础类型,以使此代码 便携式

枚举Qt::AlignmentFlag的外部,我的代码,我不能改变它。我倾向于忽略这个警告。如果我离开此代码,那么最糟糕的情况是什么?

+0

@BoPersson请提供它作为答案。 –

+0

我认为建议的重复已经表明这种情况。 –

回答

1

如果枚举使用所有9位,则在读取它时会得到一个负数。将其与其他值比较可能会给您带来问题。

相关问题