"define"在C或C++語言源程式中允許用一個辨別符來表示一個字元串,稱為“宏”。“define”為宏定義指令。
被定義為“宏”的辨別符稱為“宏名”。在編譯預處理時,對程式中所有出現的“宏名”,都用宏定義中的字元串去代換,這稱為“宏代換”或“宏展開”。宏定義是由源程式中的宏定義指令完成的。宏代換是由預處理程式自動完成的。
在C或C++語言中,“宏”分為有參數和無參數兩種。
我的舉例是"define"用法中容易出錯和忽略的一種。
#include<iostream>
#define M 3;
const N = 3;
int main()
{
int a=8,m,n;
m =a-M-1;
m =a-N-1;
cout<<"m= "<<m<<endl;
cout<<"n= "<<n<<endl;
return 0;
}
輸出為:m= 5
n= 4
為什麼不是m=n=4呢,因為"#define M 3;"注意3後邊的分号,是以“3;”是宏名M的代替。
是以“n =a-M-1;"=="n =a-3;-1;"計算時不計算-1,n=5;
切記!!!