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

2021-10-03 11:22:34 字數 464 閱讀 3119

1.型別

const 常量有資料型別,而巨集常量沒有資料型別。編譯器可以對前者進行型別安全檢查。而對後者只進行字元替換,沒有型別安全檢查,並且在字元替換可能會產生意料不到的錯誤(邊際效應)。

2.記憶體

巨集定義的常量在預處理階段就進行了替換,因此程式執行時記憶體的常量區是沒有巨集定義的常量的,而const定義的常量存在記憶體的常量區。

3.除錯

有些整合化的除錯工具可以對const 常量進行除錯,但是不能對巨集常量進行除錯。

4.是否可以以做引數

巨集定義不能作為引數傳遞給函式,const常量可以在函式的引數列表**現。

5.定義後能否取消

巨集定義可以通過#undef來使之前的巨集定義失效,const常量定義後將在定義域內永久有效。

簡單總結:巨集定義在編譯時把所有用到巨集定義值的地方用巨集定義常量替換。const常量可以看作是乙個唯讀變數,需要指定型別,需要分配記憶體,有自己的作用域。

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,難免哪次就寫錯了。...