簡體   English   中英

編譯器警告枚舉

[英]Compiler Warn on enum

如果 integer 超出enum的“范圍”,有沒有辦法讓編譯器發出警告? 例如,像這樣:

enum Brothers {Snee, Snoo, Snum};

int main(void) {

  enum Brothers k;
  k = Snee;
  k = 9; // compiler warning for an int outside [0,2] ?

}

我在 GCC 上找不到與您想要的完全匹配的選項。 GCC一些與枚舉相關的編譯器標志,這將使枚舉稍微表現得更好。 例如, -Wenum-compare在比較不同類型的枚舉是否相等時會給出警告:

enum fruit {                                                                                                            
    APPLE,                                                                                                              
    BANANA                                                                                                              
};                                                                                                                      
                                                                                                                      
enum colors {                                                                                                           
    RED,                                                                                                                
    BLUE                                                                                                                
};                                                                                                                      
                                                                                                                                                                                                                                     
if (APPLE == RED) { // -Wenum-compare gives compiler warning here.
    ...
}

您正在尋找的選項似乎確實存在於clang雖然為-Wassign-enum

自 10.2 版起不適用於 gcc。 2002 年有一個相關的開放增強請求,但開發人員似乎對實現它並不感興趣。

如果給定-Wassign-enum選項,clang 將對此發出警告: https://godbolt.org/z/zv8an5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM