3.16 枚舉和一組預處理的 #define 有什麼不同?

只有很小的區別。 C 標準中允許枚舉和其它整形類別自由混用而不會出錯。 (但是, 假如編譯器不允許在未經明確類型轉換的情況下混用這些類型,則 聰明地使用枚舉可以捕捉到某些程序錯誤。)

枚舉的一些優點: 自動賦值; 調試器在檢驗枚舉變量時, 可以顯示符號值; 它們服從數據塊作用域規則。(編譯器也可以對在枚舉變量被任意地和其它 類型混用時, 產生非重要的警告信息, 因為這被認為是壞風格。) 一個缺點是程序員不能控制這些對非重要的警告; 有些程序員則反感於無法 控制枚舉變量的大小。

參考資料: [K&R2, Sec. 2.3 p. 39, Sec. A4.2 p. 196]; [ISO, Sec. 6.1.2.5, Sec. 6.5.2, Sec. 6.5.2.2, Annex F]; [H&S, Sec. 5.5 pp. 127-9, Sec. 5.11.2 p. 153]。

翻譯朱群英、孫雲, LaTeX2HTML 編譯 朱群英 (2005-06-23)