C語言-#define宏定義

關於宏定義,在C語言中用通過關鍵字define編寫,其是在程序編譯前由系統處理,即預編譯階段。程序編譯前會自動把程序中出現的宏名替換爲宏內容。宏定義的格式如下:
#define 宏名 宏內容
由於宏定義式是預處理編譯,不是語句,因此其後不能加“;”。宏定義分爲兩種:有參宏定義和無參宏定義。有參宏定義格式如下:
#define 宏名(參數列表)宏內容
其中宏名和參數之間不能有空格。
宏定義的運行規則是系統編譯程序時將程序中出現的宏名做簡單地替換,並非先計算宏內容中的結果。如下列中宏代表表達式的結果爲30,結果分析如下:
//宏代表表達式
#define Q 3*y+y
int main(int argc, char* argv[])
{

int y = 3;
printf("b = %d\n”,3*Q);//編譯時語句等價於3*3*y+y,而不是3*(3*y+y)
return 0;
}
通過有參宏定義可以實現變量的賦值:




#define MA(m,n) m = 3+a;n = 3*a;
int main(int argc, char* argv[])
{

int a = 3;
int i,j;
MA(i,j);//此時i=6,j=9;
printf(“i = %d,j = %d\n”,3*Q);
return 0;
}
關於宏定義的應用,下面有幾個小例子:


//無參宏定義
//定義單個宏
#define M 2
#define P 2
//宏嵌套
#define H 3*P
//用宏起別名
#define INT1 int;
int main(int argc, char* argv[])
{

INT1 b = &a;
printf("b = %d\n",b);
return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章