C++之#ifndef/#define#endif

首先在C++中,以#開頭的都是預處理命令。預處理功能包含:宏定義,文件包含,條件編譯:如下

#define  N					//宏定義
#inclued"stdio.h"			//頭文件包含
#ifndef						//條件編譯

1.#ifndef
防止頭文件被多重調用:如果在h文件中定義了全局變量,一個c文件包含同一個h文件多次,如果不加#ifndef宏定義,會出現變量重複定義的錯誤;如果加了#ifndef,則不會出現這種錯誤
作爲一種判斷使用,根據是否定義一個變量來進行分支選擇,一般用於調試;
例如:

#ifndef A
#define A
#endif	
	****B****

執行上述命令行,檢查程序中A是否被宏定義過,如果沒有則定義宏A,如果宏A被定義了,則執行B,忽略A;#ifndef要與#endif一起使用
2. #define name爲宏定義命令,對於程序中出現的宏名,都使用宏定義中的字符串去代換,這裏的字符串可以是常數,表達式或者格式串等。
C++中宏的定義可分爲有參數宏定義和無參數宏定義;
例如:
無參數宏定義

#define A 10

在程序中A始終代表10;
有參數宏定義:

#define  A(x)  (x*x+2*x+1)
a = A(2);			/*宏調用*/

再如:

#define B(x,y)  ((x>y)?x:y)
int a,b,max;
max = B(a,b);
printf("a和b的最大值:%d\n",max);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章