看看以下两个宏定义:
#define PSQR(x) printf("The square of x is %d.\n",(x)*(x)) #define PSQR(x) printf("The square of "#x" is %d.\n",(x)*(x))
我们的目标是希望使用宏的时候将宏体中的x替换为宏参数,但是第一个宏定义是不能完成这样的目标的,因为引号中的x会被看做是普通文本,不可替换;我们可以采用#运算符来实现这样的功能。
PSQR(x)在两个不同的宏定义输出的结果如下:
The square of x is 4.
The square of 2 is 4.