宏定义详细知识点
1、格式:
#define 宏名 字符串
例:#define a 6
则a是宏名,凡是出现a的地方均用6替换
2、注意:
宏替换是一种机械替换;不做语法检查,不是下一个语句,其后不加";"
#define命令出现在函数的外面,有效范围是定义处到本源文件结束,可以用#undef命令终止作用域。
进行宏定义时可以用已经定义的宏名,进行层层叠换。
对程序中双引号括起来的字符串内,即使与宏名相同,也不进行置换。
#define a 3int fun(){......}#undef aint main(){......}
二、带参数的宏定义
1、格式:
#define s(a,b) a*b
2、该宏替换也是机械替换
#define s(a,b) a*b
int a=1;int b=2;
data=s(a+b,a+b);
data的值并不等于9而是1+2*1+2=5
3、实际例子:
定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。
输出已交换后的两个值。
#include using namespace std;#define change(a,b) int t=a; a=b; b=tint main(){int n, m;cin >> n >> m;change(n, m);cout << n << '\t' << m;}
运行结果: