#include <iostream>
using namespace std;
#define SWAP(a,b) {a=a+b; b=a-b; a=a-b; }
#define SWAPIT(a,b) {a=a^b;b=a^b;a=b^a;}
int main()
{
int a =3,b = 4;
SWAP(a,b);
cout<<a<<'\t'<<b<<endl;
SWAPIT(a,b);
cout<<a<<'\t'<<b;
return 0;
}
此前我一直有疑问,使用宏的时候,既没有传入指针,也没有传入应用,两个数的值为什么会改变。现在仔细看看代码,发现所谓的“宏函数”其实并不是本质上的函数,它就是一个代码段而已。如此一来并不会发生函数入栈、出栈操作,因此在宏定义里面也就没有所谓的局部变量问题。