列舉和巨集的區別

2021-10-08 15:23:49 字數 491 閱讀 1138

區別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。列舉常量具有型別,但巨集沒有型別,列舉變數具有與普通變數相同的諸如作用域 值等性質,但巨集沒有,巨集不是語言的一部分,它是一種預處理替換符。列舉型別主要用...