列舉常量與巨集的區別主要有幾點:
1。列舉常量是實體中的一種,但巨集不是實體;
2。列舉常量屬於常量,但巨集不是常www.cppcns.com量;
3。列舉常量具有型別,但巨集沒有型別,列舉變數具有與普通變數相同的諸如作用域、值等性質,但巨集沒有,巨集不是語言的一部分,它是一種預處理替換符。列舉型別主要用於限制性輸入,例如,某個函式的某引數只接受某種型別中的有限個數值,除此之外的其它數值都不接受,這時候列舉能很好地解決這個問題。能用列舉盡量用列舉,否則在除錯的時候你是看不到當時的值的。
4。用巨集去定義乙個變數如果你定義了乙個相同的變數那麼要看誰在前面,如果巨集在前面變數會產生編譯錯誤,而且這個錯誤很難查詢,如果那個巨集隱藏的很深的話。如果你定義的變數在前那麼更可怕了,直接沒有錯誤,但是巨集定義被自定義的變數悄悄替換了。用列舉定義的話不管你定義的順序前後關係怎樣都會產生重複定義的錯誤。從上面的舉例來看列舉比巨集好用的多。巨集還有乙個特性是沒有作用域,這裡的作用域是指巨集定義以後的**都可以使用這個巨集。巨集可以被重複定義這個可能導致巨集的值被修改。所以建議不要用巨集去定義整形的變數,用列舉或者const。又會有用const還是列舉呢,世界一向如此糾結,列舉只能表示整形,const可以修飾任www.cppcns.com何型別。整形的情況下如果你要定義幾種有關係的數值那麼用列舉,否則用const。
本文標題: 列舉和巨集的區別詳細解析
本文位址: /ruanjian/c/99934.html
列舉和巨集的區別
列舉常量與巨集的區別主要有幾點 1。列舉常量是實體中的一種,但巨集不是實體 2。列舉常量屬於常量,但巨集不是常量 3。列舉常量具有型別,但巨集沒有型別,列舉變數具有與普通變數相同的諸如作用域 值等性質,但巨集沒有,巨集不是語言的一部分,它是一種預處理替換符。列舉型別主要用於限制性輸入,例如,某個函式...
列舉和巨集的區別
區別1 巨集是是在預編譯階段進行的文字替換,而列舉是在編譯的階段進行的處理的 所以巨集不能除錯,列舉可以除錯。區別2 巨集定義時需要一條一條的定義,而列舉定義一次就可以了 define mon 1 define tues 2 define wed 3 enum mon,tues,wed列舉中的每一項...
巨集定義和列舉型別的區別
摘要 在c語言的程式設計中,我們常常需要定義一些常量,此時是採用巨集定義還是採用列舉型別呢?它們有哪些區別?本文主要 這個問題。一 作用域對比 1.1巨集定義的預設作用域為整個檔案,如果定義了巨集定義結尾的地方,作用域就到那個地方 這裡有乙個潛在的危險,如果我們的標頭檔案中包含了巨集定義,此時會導致...