连接符 ##(两个井号)

不知道什么符 #(一个井号)

## 连接符号由两个井号组成,其功能是在带参数的宏定义中将两个子串(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; :)~

##(两个井号)和#(一个井号)都是什么意思相关推荐

  1. ##(两个井号)和#(一个井号)都是什么意思C and C++ 2008-09-23 21:18:27 阅读1106 评论0 字号:大中小 订阅 .

    ##(两个井号)和#(一个井号)都是什么意思 C and C++ 2008-09-23 21:18:27 阅读1106 评论0   字号:大中小 订阅 连接符 ##(两个井号) 不知道什么符 #(一个 ...

  2. 一般写入的两个IMEI号和一个MEID号,输入*#06#*后显示遗漏一个IMEI号。

    在override/vendor/mediatek/proprietary/packages/apps/Dialer/java/com/android/dialer/dialpadview/Speci ...

  3. [C++]##(两个井号)和#(一个井号)都是什么意思

    文章轉自:http://thatax.blog.163.com/blog/static/20892680200882391827116/ 版權歸原作者! 连接符 ##(两个井号) 不知道什么符 #(一 ...

  4. C语言(C++语言)中##(两个井号)和#(一个井号)用法[转]

    C语言(C++语言)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念).下面对常遇到的宏的使用问题做了简单总结. 关 于#和## 在C语言的宏中,#的功能是将其后面的宏参数进 ...

  5. python一个等号和两个等号_有车以后视频号商业方法论:我们用视频号再造一个公众号...

    近期行业内探讨自己做视频号内容定位时,一直有两种声音作为大家思考未来视频号潜力的前提和指引方向. 第一 ,抖音已经完成了体验传递,情绪表达,趣味探索的占领:留给视频号的空间只有价值表达,观点传递,圈子 ...

  6. c语言输入字符串以井号结束,C语言中两个井号“##”和一个井号#的使用方法[转]...

    最近看了一些dsp的库函数,发现了一些使用##的宏定义,以前没有用到过,后来差了些资料,学习了##的用法. 例如下面的语句: #define  CSL_FMK(PER_REG_FIELD, val) ...

  7. C/C++中单井号与双井号的使用

    C/C++中单井号与双井号的使用 作者:delnabla 日期:2009-12-24 字体大小: 小 中 大 在宏定义中经常会用到#和## 单井号(#) 把传递过来的参数当成字符串进行替代 如下示例: ...

  8. C语言中 井号#、双井号##

    在 C 语言中,井号 "#" 是一个预处理器指令的符号,用于在编译之前处理代码.预处理器指令以 "#" 开始,以换行符结束. 常见的预处理器指令包括: #inc ...

  9. C语言宏与单井号(#)和双井号(##)

    C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译器概念(而非运行期概念).下面对常遇到的宏的使用问题做了简单总结. 关于#和## 在C语言的宏中,#的功能是将其后面的宏参数进行字符串 ...

最新文章

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

热门文章

  1. 一、文本框和按钮不对齐现象(高度得设置一样)
  2. 2020年Java阶段面试题(初)
  3. dumpsys 使用
  4. 树莓派linux怎么连接wifi,树莓派Zero W 设置wifi网络和ssh
  5. Three.js应用场景以及开发前准备工作
  6. Opencv_10 图像的透视变换
  7. 【微机汇编语言学习笔记(五)】十六进制转ASCII码
  8. 什么是变量,什么是类型?
  9. 自己游戏之旅————感言
  10. 菜鸟为何恐慌紧随京东推出智能送货机器人?