簡體   English   中英

使用枚舉定義單個值的優點? (C)

[英]Advantages in using an enum to define a single value? (C)

最近,在這個問題中,我看到一個用於定義單個值的枚舉。 例如:

enum { BITS_PER_WORD = 32 };

代替:

#define BITS_PER_WORD 32

假設以后不會添加更多成員,那么這樣做的好處是什么? (或者這是個人品味的問題)

換句話說,如果我使用one-off int定義的現有代碼,是否有任何理由改變上面顯示的一次性枚舉?

出於好奇,我將GCC的優化匯編程序輸出與一些非平凡的代碼進行了比較,結果在枚舉/定義之間保持不變。

枚舉常量有幾個優點:

  • 它們是作用范圍的,不會在它們不應該的情況下擴展(正如mafso指出的那樣)。
  • 大多數調試器都知道它們,並且可以在調試器中編寫的表達式中使用它們。

宏有幾個不同的優點:

  • 它們可以在預處理器條件中使用(如果BITS_PER_WORD是枚舉常量,則#if BITS_PER_WORD == 32將不起作用)。
  • 它們可以有任意類型(mafso的回答也包含在內)。
  • 不再需要時可以刪除它們( #undef )。

一個優點是enum是作用域的,您可以在塊內定義enum 宏也會擴展,例如:

foo.BITS_PER_WORD;

甚至

void foo(int BITS_PER_WORD) { /* ... */ }

宏的一個優點是,您可以將其定義為非int值。

暫無
暫無

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

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