簡體   English   中英

如何在GCC中使用不同的枚舉類型分配或執行算術時發出警告?

[英]How to warn when assigning or performing arithmetic with different enum types in GCC?

雖然我知道這是有效的C不能區分枚舉類型。

GCC確實有-Wenum-compare (我正在使用)並按預期工作。

我嘗試使用-Wconversion但這沒有任何區別。

賦值和算術運算符( + / - / & / | ...等)如何生成警告? (作業,或者......等)

{
    enum Foo f = SOME_VALUE;
    enum Bar b = SOME_OTHER_VALUE;

    if (f != b) {
        /* this warns! */
    }

    f = b;  /* <-- how to warn about this? */
    f |= b;  /* .. and this? */

}

筆記:

  • 切換到C ++不是一種選擇(如其他答案所示)
  • 這個問題是密切相關的,但它不是重復的,因為它是關於傳遞參數而不是算術。

根據這個答案 ,只有clang支持所期望的行為。

一些方法可以在C中模擬強類型枚舉,但它們似乎有各種限制。

暫無
暫無

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

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