什麼時候需要用到enum呢,就是變數的數值在幾個範圍之間.red,blue,black.這樣用enum比較好.當然也可以用define.但是define維護起來比較麻煩.
#define 適合比較少的變數的時候.
用enum關鍵字說明常量(即說明列舉常量)有以下幾點好處:
(1) 使程式更容易維護,因為列舉常量是由編譯程式自動生成的,而識別符號常量必須由程式設計師手工賦值。例如,你可以定義一組列舉常量,作為程式中 可能發生的錯誤的錯誤號,請看下例:
enum error_code
;
在上例中,out_of_memory等列舉常量依次被編譯程式自動賦值為0,1,2和3。
同樣,你也可以用#define指令說明類似的一組常量,請看下例:
#define out_of_memory 0
#define insufficient_disk_space 1
#define logic_error 2
#define file_not_found 3
上述兩例的結果是相同的。
(2) 使程式除錯起來更方便,因為某些識別符號除錯程式能列印列舉常量的值。這一點在除錯程式時是非常用的,因為如果你的程式在使用列舉常量的一 行語句中停住了,你就能馬上檢查出這個常量的值;反之,絕大多數除錯程式無法列印識別符號常量的值,因此你不得不在標頭檔案中手工檢查該常量 的值。
列舉與巨集定義的區別和聯絡:
列舉和define都可以swtich,列舉是型別安全的,define不是型別安全的。列舉只能定義整形值,define能定義幾乎任何值
enumnodetype ;
voidmain()
return0;
}巨集和列舉之間的差別主要在作用的時期和儲存的形式不同,巨集是在預處理
的階段進行替換工作的,
它替換**段的文字,程式執行
的過程中巨集已不
存在了。而列舉是在程式執行之後才起作用的,
列舉常量儲存在資料段的
靜態儲存區里。巨集占用**段的空間,而
列舉除了占用空間,還消耗cpu
資源。
但也不能就此說巨集比列舉好,如果需要定義非常多的常量,用一條
enum 明顯
比一大堆define更清晰,列舉也可以用來定義一些
特殊型別,比
如bool,如:
type enum bool;
總結:
define特點:優點:巨集定義可為多種型別的值,如字串、整型、浮點型等。
缺點:沒有範圍限制(全域性範圍有效),容易發生衝突,產生不確定的結果;
多個相關的值一起定義時比較散亂。
enum特點:
缺點:只能為整型值
優點:遵循範圍規則,不易和其它定義發生衝突。
多個相關值一組,比較清晰。
一般情況下二者可選時盡量用enum。
你也許不知道的 define用法
from 最近看com相關的資料,看到ccmdtarget實現com介面的時候,去讀了一些巨集的定義,在afxdisp.h標頭檔案中 define begin inte ce part localclass,baseclass class x localclass public baseclass ...
你可能不知道得define
define g variable 26.5 記號g variable可能不會被編譯器看到,在進行預處理的時候,g variable已經被替換成26.5,於是g variable並未進入符號表,此時執行次變數出現錯誤的提示可能只會提到26.5,若此時g variable定義在乙個非你寫的標頭檔案裡,...
不知道不知道
函式分析 希爾伯特 哥德爾不完備定理 哥德爾不完全性定理一舉粉碎了數學家兩千年來的信念。他告訴我們,真與可證是兩個概念。可證的一定是真的,但真的不一定可證。某種意義上,悖論的陰影將永遠伴隨著我們。無怪乎大數學家外爾發出這樣的感嘆 上帝是存在的,因為數學無疑是相容的 魔鬼也是存在的,因為我們不能證明這...