##(两个井号)和#(一个井号)都是什么意思
连接符 ##(两个井号)
不知道什么符 #(一个井号)
## 连接符号由两个井号组成,其功能是在带参数的宏定义中将两个子串(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 字号:大中小 订阅 .
##(两个井号)和#(一个井号)都是什么意思 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语言的宏中,#的功能是将其后面的宏参数进 ...
- 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语言的宏中,#的功能是将其后面的宏参数进行字符串 ...
最新文章
- 一招教你解决大数据量下的各种报表使用问题
- wps两列数据分别作为xy轴_0.4 秒,完成两列数据核对
- 吃透理财三句话人人都能成百万富翁
- Android SubsamplingScaleImageView(subsampling-scale-image-view)单双击长按事件【系列2】
- Fedora/CentOS7/RedHat7关闭图形桌面开启文本界面
- hadoop hive集群_失眠大数据专家,基于Hadoop不同版本搭建hive集群(附配置文件)
- 安卓 linux arm go,go arm、android版本
- 【图像增强】基于matlab PSO寻优ACE算法图像增强【含Matlab源码 088期】
- matlab 中.*和* 区别
- 学习笔记之极客时间《Java 核心技术面试精讲》
- MATLAB 读取图片像素处理
- 近年来小学计算机课程目录,小学3-6年级信息技术课程目录(苗逢春版)
- Python xldr 读取xls 文件中时间格式处理
- Python Matplotlib 散点图的绘制
- 等保三级认证备案证明是哪个机构颁发?一般要多久?
- Android.mk编译java动态库
- Boost ASIO proactor 浅析
- 硬盘安装SnowLeopard(Mac OS)
- 别处官网下载的STEP格式装配体另存为SLDASM格式失败的解决办法
- OSCP-Snookums(db.php配置文件泄露)