宏定义,做的只是替换,不管是定义宏变量还是宏函数,都是使用#define后面定义的宏变量或宏函数来替换后面的替换体,对于带参宏函数而言,程序实际运行时,参数同样的代入到后续替换的函数中即可。
注意: 宏定义可以使用多行,需要在行末尾添加 “\” 符号。
调用形式
#define 宏变量/宏函数 替换体
#define PI 3.1415926
#define existence(num) num*num
#define judge(num1, num2) \
if (num1 >= num2) {\
cout << "num1 is larger! \n";\
}\
else cout << "num2 is larger! \n";\
符号含义
说明宏定义中#、##和#@符号的含义。1
- #@:将单字符标识符变换为单字符,即加单引号。
#define A(x) #@x //此处x仅限于单个字符
A(m); //表示为字符'm',A(abc)无效
- #:对应变量字符串化,即加双引号 。
#define B(x) #x
B(me); //表示字符串“me”
B(abcd1234); //表示字符串“abcd1234”
- ##:把宏参数名与宏定义代码序列中的标识符连接在一起,形成一个新的标识符。
#define C(x) Class##x
C(List); //表示为标识符ClassList