C++语言程序设计

9.1.2 带参数的宏定义
带参数的宏定义的一般形式如下：
#define <宏名>（<参数表>） <宏体>
其中， <宏名>是一个标识符，<参数表>中的参数可以是一个，也可以是多个，视具体情况而定，当有多个参数的时候，每个参数之间用逗号分隔。<宏体>是被替换用的字符串，宏体中的字符串是由参数表中的各个参数组成的表达式。例如：
#define SUB(a,b) a-b
如果在程序中出现如下语句：
result=SUB(2, 3)
则被替换为：
result=2-3；
如果程序中出现如下语句：
result= SUB（x+1, y+2）;
则被替换为：
result=x+1-y+2;
在这样的宏替换过程中，其实只是将参数表中的参数代入到宏体的表达式中去，上述例子中，即是将表达式中的a和b分别用2和3代入。
我们可以发现：带参的宏定义与函数类似。如果我们把宏定义时出现的参数视为形参，而在程序中引用宏定义时出现的参数视为实参。那么上例中的a和b就是形参，而2和3以及x+1和y+2都为实参。在宏替换时，就是用实参来替换<宏体>中的形参。