预处理中的“#”运算符和“##”运算符

来源:互联网 发布:退出淘宝客 之前的链接 编辑:程序博客网 时间:2024/06/05 23:51

“#”和“##”这两个运算符都是预处理,在这里,对他的使用是一个关键,接下来我们通过一段程序来认识一下:

//#//###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。所以可以知道,“##“起的作用就是连接任意的字符。

特别注意:
在单一的宏定义中,最多只能出现一次”#“或”##“操作符。当然,由于这些限定,除非是在非常必须的情况下,否则应该尽量不使用”#“和”##“。

0 0
原创粉丝点击