> 文档中心 > 宏定义详细知识点

宏定义详细知识点

一、不带参数的宏定义

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;}

运行结果: