看看以下兩個宏定義:
#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.