const 和 define定義常量的區別

1.類型
const 常量有數據類型,而宏常量沒有數據類型。編譯器可以對前者進行類型安全檢查。而對後者只進行字符替換,沒有類型安全檢查,並且在字符替換可能會產生意料不到的錯誤(邊際效應)。
2.內存
宏定義的常量在預處理階段就進行了替換,因此程序運行時內存的常量區是沒有宏定義的常量的,而const定義的常量存在內存的常量區。
3.調試
有些集成化的調試工具可以對const 常量進行調試,但是不能對宏常量進行調試。
4.是否可以以做參數
宏定義不能作爲參數傳遞給函數,const常量可以在函數的參數列表中出現。
5.定義後能否取消
宏定義可以通過#undef來使之前的宏定義失效,const常量定義後將在定義域內永久有效。

簡單總結:宏定義在編譯時把所有用到宏定義值的地方用宏定義常量替換。const常量可以看作是一個只讀變量,需要指定類型,需要分配內存,有自己的作用域。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章