#和##运算符

#是预处理?是的,你可以这么认为。那怎么用它呢? 别急,先看下面例子:

#define SQR(x) printf("The square of x is %d.\n", ((x)*(x)));

如果这样使用宏:

SQR(8);

则输出为:

The square of x is 64.

注意到没有,引号中的字符 x 被当作普通文本来处理,而不是被当作一个可以被替换的语言符号。

假如你确实希望在字符串中包含宏参数,那我们就可以使用“#” ,它可以把语言符号转

化为字符串。上面的例子改一改:

#define SQR(x) printf("The square of "#x" is %d.\n", ((x)*(x)));

再使用:

SQR(8);

则输出的是:

The square of 8 is 64.

很简单吧?相信你现在已经明白#号的使用方法了。

##运算符可以用于宏函数的替换部分。这个运算符把两个语言符号组合成单个语言符号。看例子:

#define XNAME(n) x ## n

如果这样使用宏:

XNAME(8)

则会被展开成这样:

x8

也就是说,##就是个粘合剂,将前后两部分粘合起来。

你可能感兴趣的:(#和##运算符)