预处理中的“#”运算符和“##”运算符
2016-04-06 11:24
239 查看
“#”和“##”这两个运算符都是预处理,在这里,对他的使用是一个关键,接下来我们通过一段程序来认识一下:
程序运行结果:
在这里我们可以分析,在宏中的n字符最后被所给的参数代替,所以“#”运算符,它可以把语言符号转化为字符串。
对于“##”运算符呢,在程序中,它把game和n组合成了game9,game9为99,所以最后也就输出了game99。所以可以知道,“##“起的作用就是连接任意的字符。
特别注意:
在单一的宏定义中,最多只能出现一次”#“或”##“操作符。当然,由于这些限定,除非是在非常必须的情况下,否则应该尽量不使用”#“和”##“。
//# //## #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。所以可以知道,“##“起的作用就是连接任意的字符。
特别注意:
在单一的宏定义中,最多只能出现一次”#“或”##“操作符。当然,由于这些限定,除非是在非常必须的情况下,否则应该尽量不使用”#“和”##“。
相关文章推荐
- 数据结构之排序算法(五)-直接插入排序,希尔排序,直接选择排序
- 单例模式(转载)
- WORD Application.Documents.Open函数返回null的一种解决方法
- Linux 两个文件求交集、并集、差集
- HTML5-新特性
- install mysql for mac
- tuxedo编译ubb文件的一个报错
- Fragment与Activity的相互通信(二)
- redis与spring的集成
- sql执行结果
- 在mysql数据库中创建oracle scott用户的四个表及插入初始化数据
- iOS个人整理37-Animation动画
- JMS createSession(false, Session.AUTO_ACKNOWLEDGE); 两个参数不同组合下的区别
- node.js入门小实例
- Java中使用这则表达式
- 在mysql数据库中创建oracle scott用户的四个表及插入初始化数据
- 团队项目——班级派
- 设计模式--访问者模式C++实现
- 分布式缓存地址
- java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filter