2017-07-20 55 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位,則在讀取它時會得到一個負數。將其與其他值比較可能會給您帶來問題。

相關問題