巨集定義define和const的區別

2022-09-08 15:27:12 字數 779 閱讀 3533

define和const都可以用來定義常量,define的格式為:#define 識別符號 字串,const在定義常量前面,const型別定以後不能被修改,區別主要有如下幾點:

define是在預處理時進行展開,在編譯時會將其全部替換,const在編譯執行使使用

define是直接替代,因此不占用記憶體,在**段儲存,而const常量會占用記憶體,在資料段儲存

define沒有型別,編譯時不會做任何編譯檢查,const必須制定型別,編譯器會進行型別檢查

當編譯時對define的物件進行替換時,進行系統展開可能會出現優先順序問題,如定義乙個乘法

#define mul(a,b) a*b

mul( 2, 3 ) //結果為2*3 = 6

mul( 1+2, 3 ) //結果為1+2*3 = 5

mul( (1+2), 3 ) //結果為(1+2)*3 = 9

由上可知,呼叫時需要加上括號才不會出錯

const定義後在常量定義域內有效,而define預處理之後則全域性有效,當然也還可以取消,使用undef,如

#define  n   1

#undef n

則只能在define和undef之間使用n,define還可以用來做條件編譯,如

#ifdef  windows

***;

#endif

#ifdef linux

***;

#endif

參考:《 c++ primer 》

define巨集定義和const

define是在預編譯階段就定義的常量,不占用記憶體空間 const可以在程式的任何時候定義,是乙個全域性的常量,放在記憶體的static部分。define巨集定義沒有指定的型別,而const在定義時就指定了常量的型別。const int p p可變,p指向的物件不可變 int const p p可...

define巨集定義和const常量定義之間的區別

define部分 巨集不僅可以用來代替常數值,還可以用來代替表示式,甚至是 段。巨集的功能很強大,但也容易出錯,所以其利弊大小頗有爭議。巨集的語法為 define 巨集名稱 巨集值 注意,巨集定義不是c或c 嚴格意義上的語句,所以其行末不用加分號結束。作為一種建議和一種廣大程式設計師共同的習慣,巨集...

define巨集定義和const常量定義之間的區別

用巨集表示常數 假如我們要寫乙個有關圓的種種計算的程式,那麼 3.14159 值會被瀕繁用到。我們顯然沒有理由去改 的值,所以應該將它當成乙個常量對待,那麼,我們是否就不得不一遍一遍地寫3.14159這一長串的數呢?必須有個偷懶的方法,並且要提倡這個偷懶,因為多次寫3.14159,難免哪次就寫錯了。...