首先在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);