define和const的區別

2021-08-03 04:26:48 字數 564 閱讀 6490

1、define是在預處理階段展開,僅僅是展開,不做任何型別檢測

const是在編譯過程中使用,並且做型別檢測

2、define在哪些地方使用,就在哪些地方展開,系統不會為其分配記憶體

const會在記憶體中分配一塊記憶體位址

3、const常量在編譯過程中,只有乙份拷貝,

define:存在多少,就有多少份拷貝

4、有些編譯器並不會為普通的const常量分配記憶體,而是直接放入常量表中,這在使用中加快了讀寫效率

整體來說,對於專案中需要被經常使用的常量,可以使用const來表示,並且還會做好型別保護檢測,不會導致邊緣效應。

但是對於某乙個檔案(比如某個view的布局檔案裡面的布局常量),也可以使用巨集定義,但是要避免邊緣效應。

在正常的開發中,對於螢幕寬度、高之類的,我們都會使用巨集定義來表示,因為編譯過程中,const是沒法解讀「類」的存在的,而對於pie這些常量型變數,則可以直接使用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巨集僅僅是展開,有多少地方使用,就展開多少...