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