const和define的區別

2021-09-29 05:13:53 字數 473 閱讀 9384

#define

const

起作用的階段

在編譯的預處理階段起作用

編譯、執行的時候起作用

起作用的方式

是字元替換,沒有型別檢查

有型別檢查

儲存方式

只是進行展開,有多少次使用就替換多少次,它定義的巨集常量在記憶體中有若干個備份

定義的唯讀變數在程式執行過程中只有乙份備份

**除錯的方便程度

不能除錯,因為在預編譯階段就已經替換掉了

可以進行除錯

儲存位置

**段唯讀資料段(全域性變數);棧(區域性變數)

沒有資料型別

有資料型別

可以節省空間,避免不必要的記憶體分配,提高效率

const和define的區別

1 編譯器處理方式不同 define巨集是在預處理階段展開。const常量是編譯執行階段使用。2 型別和安全檢查不同 define巨集沒有型別,不做任何型別檢查,僅僅是展開。const常量有具體的型別,在編譯階段會執行型別檢查。3 儲存方式不同 define巨集僅僅是展開,有多少地方使用,就展開多少...

const和 define的區別

1 const定義的常量是有型別的,define定義的常量是沒有型別的 這就意味著會對前者做乙個型別的檢查,對 define則是做乙個簡單的替換 2 const定義的常量在編譯的時候分配記憶體,而 define定義的常量在預編譯的時候進行替換,不分配記憶體 3 作用域不同,const定義的常變數的作...

const和define的區別

1 編譯器處理方式不同 define巨集是在預處理階段展開。const常量是編譯執行階段使用。2 型別和安全檢查不同 define巨集沒有型別,不做任何型別檢查,僅僅是展開。const常量有具體的型別,在編譯階段會執行型別檢查。3 儲存方式不同 define巨集僅僅是展開,有多少地方使用,就展開多少...