define巨集定義和const常變數區別:
1.define是巨集定義,程式在預處理階段將用define定義的內容進行了替換。因此程式執行時,常量表中並沒有用define定義的常量,系統不為它分配記憶體。
const定義的常量,在程式執行時在常量表中,系統為它分配記憶體。
2.define定義的常量,預處理時只是直接進行了替換。所以編譯時不能進行資料型別檢驗。
const定義的常量,在編譯時進行嚴格的型別檢驗,可以避免出錯。
3.define定義表示式時要注意「邊緣效應」,例如如下定義:
#define
n 2+3
//我們預想的n值是5,我們這樣使用n
int
a =
n/2;
//我們預想的a的值是2.5,可實際上a的值是3.5
原因在於在預處理階段,編譯器將
a =
n/2處理成了
a =
2+3/2;這就是巨集定義的字串替換的「邊緣效應」因此要如下定義:
#define
n (2+3)
const定義表示式沒有上述問題。
const定義的常量叫做常變數原因有二:
const定義常量像變數一樣檢查型別
const可以在任何地方定義常量,編譯器對它的處理過程與變數相似,只是分配記憶體的地方不同
abs int 巨集定義 巨集定義和巨集方法
巨集定義和巨集方法 定義機型 define is iphone5 uiscreen instancesrespondtoselector selector currentmode cgsizeequaltosize cgsizemake 640,1136 uiscreen mainscreen cu...
巨集定義和巨集編譯
以下是巨集定義的一些用法11.4.2 if defined else endif 此編譯指令為 ifdef else endif的等價編譯指令。其語法格式如下 if defined 常量表示式 段1 else 段2 endif 或 if defined 常量表示式 段1 else 段2 endif ...
C語言巨集定義和巨集定義函式
c語言巨集定義和巨集定義函式 巨集定義可以幫助我們防止出錯,提高 的可移植性和可讀性等。在軟體開發過程中,經常有一些常用或者通用的功能或者 段,這些功能既可以寫成函式,也可以封裝成為巨集定義。那麼究竟是用函式好,還是巨集定義好?這就要求我們對二者進行合理的取捨。我們來看乙個例子,比較兩個數或者表示式...