巨集定義#define是乙個編譯預處理指令
編譯預處理指令:在編譯前進行解析處理的指令
巨集定義
#define
巨集名的命名規範
1、全部大寫有多個單詞中間使用下劃線隔開(常用
) 2、以
k開頭的駝峰標識
(不常用)
1.1
不帶引數巨集定義:在預編譯的時候所出現巨集名標識的地方都會被替換成巨集名後面的值
注意點:
a.在注釋中的巨集名不會替換
b.在字串中出現的巨集名不會被替換
#define num 10 //一般定義的名稱都大寫,後面不加;號
int main(int argc, const char * argv)
1.2
帶引數的巨集定義:把出現巨集名地方都會把巨集名後面小括號中的引數代入到巨集後面的表示式中,然後進行替換
格式:#define 巨集名(引數列表) 表示式
注意點:
a.引數列表中沒有型別
b.巨集名與括號之間一定不要加空格
帶引數的巨集與函式的區別
1、函式有乙個呼叫過程,會開闢新儲存空間,需要花費一些開銷的
2、巨集僅僅是做乙個替換的操作,速度比較快
使用場景:
1、當計算比較簡單,引數比較少的時候使用巨集,巨集提高運算效率
2、當邏輯比較複雜、引數多的時候使用函式
巨集的注意點:
1、巨集僅僅是做乙個替換的操作
2、如果自己寫巨集定義,那麼所有出現引數以及運算結果的地方都要加上括號
3、巨集有一些固有的缺點是沒有辦法消除的,在使用帶引數的巨集的時候不要在引數使用++ -- += -= /= *= %=
//引數列表中沒有型別
#define max(num1,num2) num1 > num2 ? num1 : num2
//運算的地方加上括號,因為僅僅是替換
#define sum(num1,num2) (num1 + num2)
#define cheng(num) ((num) * (num))
int main(int argc, const char * argv)
C 巨集定義 define
可以用 define命令將乙個指定的識別符號 即巨集名 來代表乙個字串。定義巨集的作用一般是用乙個短的名字代表乙個長的字串。它的一般形式為 define 識別符號 字串 這就是已經介紹過的定義符號常量。如 define pi 3.1415926 還可以用 define命令定義帶引數的巨集定義。其定義...
c語言巨集定義 define
數值巨集常量 define 巨集定義可以定義在 的任何地方,從本行巨集定義開始到後面 都認識這個巨集 可以把任何東西定義成巨集。因為編譯器在預編譯的時候用真身替換替身,然而在 裡面卻又常用替身來幫忙。巨集定義是個演技高超的替身演員,但也會經常耍大牌的,我們慎用它。define pi 3.141592...
c 巨集定義用法 define
巨集定義語法 define name stuff define pi 3.14 定義乙個m,值為3.14 define do forever for 定義乙個死迴圈 define reg register 定義reg來作為register的別名 define case break case 在swi...