區別1:
巨集是是在預編譯階段進行的文字替換,而列舉是在編譯的階段進行的處理的;
所以巨集不能除錯,列舉可以除錯。
區別2:
巨集定義時需要一條一條的定義,而列舉定義一次就可以了;
#define mon 1
#define tues 2
#define wed 3
enum
mon,
tues,
wed列舉中的每一項元素都是常量,是不可以賦值的更改的,但是我們可以在宣告列舉的時候給個初始值。
enum
mon,
tues = 2,
wed其中我們給tues初始值2,那麼wed預設為3 ,以此類推。
列舉是將一型別的資訊集合在一起,而巨集相對比較分散一點。
區別三:
巨集作為指令儲存在**段(指令段)
列舉作為常量,儲存在了資料區(rodata段)
而且列舉還會占用cpu的資源
列舉和巨集的區別
列舉常量與巨集的區別主要有幾點 1。列舉常量是實體中的一種,但巨集不是實體 2。列舉常量屬於常量,但巨集不是常量 3。列舉常量具有型別,但巨集沒有型別,列舉變數具有與普通變數相同的諸如作用域 值等性質,但巨集沒有,巨集不是語言的一部分,它是一種預處理替換符。列舉型別主要用於限制性輸入,例如,某個函式...
巨集定義和列舉型別的區別
摘要 在c語言的程式設計中,我們常常需要定義一些常量,此時是採用巨集定義還是採用列舉型別呢?它們有哪些區別?本文主要 這個問題。一 作用域對比 1.1巨集定義的預設作用域為整個檔案,如果定義了巨集定義結尾的地方,作用域就到那個地方 這裡有乙個潛在的危險,如果我們的標頭檔案中包含了巨集定義,此時會導致...
列舉和巨集的區別詳細解析
列舉常量與巨集的區別主要有幾點 1。列舉常量是實體中的一種,但巨集不是實體 2。列舉常量屬於常量,但巨集不是常www.cppcns.com量 3。列舉常量具有型別,但巨集沒有型別,列舉變數具有與普通變數相同的諸如作用域 值等性質,但巨集沒有,巨集不是語言的一部分,它是一種預處理替換符。列舉型別主要用...