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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章