記錄面試題
編譯器處理不同
宏定義是一個編譯時的概念,在預處理階段展開,在編譯時把所有的宏定義值得地方用宏定義常量替換,不能對宏定義進行調試,生命週期結束於編譯時期;
const常量是一個運行是的概念,在程序運行時使用,類似一個只讀數據塊。
存儲方式不同
宏定義是直接替換,不會分配內存,存儲在代碼段中;
const常量需要進行內存分配。
類型檢測
宏定義是字符替換,沒有類型檢測;
const常量聲明,需要類型檢測
const可以節省空間
宏咋代碼中會全部展開,如果過多使用宏會導致代碼膨脹;
const不同,const只在運行時有一份拷貝。
參考資料:
https://blog.csdn.net/sinat_20265495/article/details/52945960
https://www.nowcoder.com/questionTerminal/11692181b68642f89c11fa5b2413aaf1