看看以下两个宏定义:

#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.