天天看點

【C++】define的用法注意

"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;

切記!!!

繼續閱讀