#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巨集僅僅是展開,有多少地方使用,就展開多少...