“#”和“##”这两个运算符都是预处理,在这里,对他的使用是一个关键,接下来我们通过一段程序来认识一下:
//#
//##
#include<stdio.h>
#include<stdlib.h>
#define PRINT( n ) printf( "token" #n " = %d", game##n )
int main()
{
int game9 = 99;
PRINT(9);//在这里的##的作用是连接的作用,最后导致输出的变量是game9,而#的作用是就是把参数当作字符串代替;
system("pause");
return 0;
}
程序运行结果:
在这里我们可以分析,在宏中的n字符最后被所给的参数代替,所以“#”运算符,它可以把语言符号转化为字符串。
对于“##”运算符呢,在程序中,它把game和n组合成了game9,game9为99,所以最后也就输出了game99。所以可以知道,“##“起的作用就是连接任意的字符。
特别注意:
在单一的宏定义中,最多只能出现一次”#“或”##“操作符。当然,由于这些限定,除非是在非常必须的情况下,否则应该尽量不使用”#“和”##“。