1. 程式人生 > >const和#define區別

const和#define區別

  • define巨集是在預處理階段展開。const常量是編譯、執行階段使用
  • 巨集沒有型別,不做任何型別檢查,僅僅是展開。const常量有具體的型別,在編譯階段會執行型別檢查
  • 所有的巨集替換隻是簡單的字串替換,注意是字串替換,所以並不會檢查其合法性,而const定義的常量依然是內建型別等,所以會對其進行型別安全檢查。
  • define巨集僅僅是展開,有多少地方使用,就展開多少次,不會分配記憶體。const常量會在記憶體中分配(可以是堆中也可以是棧中)
  • const定義的常量只有一次拷貝。define定義的變數在記憶體中並沒有拷貝