C允许在字符串中包含宏参数,在类宏参数的替换体中,#号作为一个预处理运算符,可以把记号转换成字符串。
如果x是一个宏形参,那么#x就是转换为字符串“x”的形参名,这个过程叫做字符串化(stringizing)。
程序示例
#include<stdio.h>
#define psqr(x) printf("the square of "#x" is %d.\n",((x)*(x)))
int main()
{
int y = 5;
psqr(y);
psqr(y + 2);
return 0;
}
输出示例
the square of y is 25.
the square of y + 2 is 49.