##(两个井号)和#(一个井号)都是什么意思C and C++ 2008-09-23 21:18:27 阅读1106 评论0 字号:大中小 订阅 .
##(两个井号)和#(一个井号)都是什么意思
C and C++ 2008-09-23 21:18:27 阅读1106 评论0 字号:大中小 订阅
连接符 ##(两个井号)
不知道什么符 #(一个井号)
## 连接符号由两个井号组成,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串。但它不可以是第一个或者最后一个子串。所谓的子串(token)就是指编译器能够识别的最小语法单元。具体的定义在编译原理里有详尽的解释
#符是把传递过来的参数当成字符串进行替代。
假设程序中已经定义了这样一个带参数的宏:
#define PRINT( n ) printf( "token" #n " = %d", token##n )
同时又定义了二个整形变量:
int token9 = 9;
现在在主程序中以下面的方式调用这个宏:
PRINT( 9 );
那么在编译时,上面的这句话被扩展为:
printf( "token" "9" " = %d", token9 );
注意到在这个例子中,PRINT(9);中的这个”9”被原封不动的当成了一个字符串,与”token”连接在了一起,从而成为了token9。而#n也被”9”所替代。
可想而知,上面程序运行的结果就是在屏幕上打印出token9=9
还有点不明白?!
再来一个例子:
#define PRINT( n ) printf( "token" #n " = %d", game##n )
int token9 = 9;
int game9 = 99;
调用:
PRINT(9);
屏幕上打印出:
token9 = 99; :)~
##(两个井号)和#(一个井号)都是什么意思C and C++ 2008-09-23 21:18:27 阅读1106 评论0 字号:大中小 订阅 .相关推荐
- 一般写入的两个IMEI号和一个MEID号,输入*#06#*后显示遗漏一个IMEI号。
在override/vendor/mediatek/proprietary/packages/apps/Dialer/java/com/android/dialer/dialpadview/Speci ...
- [C++]##(两个井号)和#(一个井号)都是什么意思
文章轉自:http://thatax.blog.163.com/blog/static/20892680200882391827116/ 版權歸原作者! 连接符 ##(两个井号) 不知道什么符 #(一 ...
- C语言(C++语言)中##(两个井号)和#(一个井号)用法[转]
C语言(C++语言)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念).下面对常遇到的宏的使用问题做了简单总结. 关 于#和## 在C语言的宏中,#的功能是将其后面的宏参数进 ...
- ##(两个井号)和#(一个井号)都是什么意思
连接符 ##(两个井号) 不知道什么符 #(一个井号) ## 连接符号由两个井号组成,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串.但它不可以是第一个或者最后一个子 ...
- python一个等号和两个等号_有车以后视频号商业方法论:我们用视频号再造一个公众号...
近期行业内探讨自己做视频号内容定位时,一直有两种声音作为大家思考未来视频号潜力的前提和指引方向. 第一 ,抖音已经完成了体验传递,情绪表达,趣味探索的占领:留给视频号的空间只有价值表达,观点传递,圈子 ...
- c语言输入字符串以井号结束,C语言中两个井号“##”和一个井号#的使用方法[转]...
最近看了一些dsp的库函数,发现了一些使用##的宏定义,以前没有用到过,后来差了些资料,学习了##的用法. 例如下面的语句: #define CSL_FMK(PER_REG_FIELD, val) ...
- C/C++中单井号与双井号的使用
C/C++中单井号与双井号的使用 作者:delnabla 日期:2009-12-24 字体大小: 小 中 大 在宏定义中经常会用到#和## 单井号(#) 把传递过来的参数当成字符串进行替代 如下示例: ...
- C语言中 井号#、双井号##
在 C 语言中,井号 "#" 是一个预处理器指令的符号,用于在编译之前处理代码.预处理器指令以 "#" 开始,以换行符结束. 常见的预处理器指令包括: #inc ...
- C语言宏与单井号(#)和双井号(##)
C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译器概念(而非运行期概念).下面对常遇到的宏的使用问题做了简单总结. 关于#和## 在C语言的宏中,#的功能是将其后面的宏参数进行字符串 ...
最新文章
- python使用socket实现协议TCP长连接框架
- 微博爬虫“免登录”技巧详解及Java实现
- (转)zabbix3.4使用percona-monitoring-plugins监控mysql
- 阿里技术专家详解 DDD 系列- Domain Primitive
- 【java】SpringBoot新特性 节省百分之95﹪内存占用
- 解决 【git checkout -b dev origin/dev】报错的问题
- python类方法_Python类方法
- Shell脚本编程之(一)Shell脚本简介
- 10本Java架构师必读书籍
- ANSYS——模态分析的载荷施加问题以及约束的施加问题
- M3DGIS三维数字沙盘开发教程第51课可视化交互大数据地理信息系统开发教程第51课
- 【自动驾驶传感器融合系列】01自动驾驶中常用的传感器
- Python 集合(set)类型的操作——并交差
- python输入直角三角形两条直角边、输出斜边长_python直角三角形的两个直角边、求斜边_直角三角形斜边公式计算器 两个直角边边长的平方加起来等......
- 服务器打开显示选择键盘布局,更改服务器上的TTY键盘布局?
- JS 面试问题: 手写 new
- Mackevision 发布 2016 年回顾与展望
- 求部门最高工资(Mysql多表查询)
- 安装ktorrent amule 下载edk2 迅雷文件
- 减肥的第5天 (想吃——冰淇淋)