C/C++语言宏定义##连接符和符#的使用

    【尊重原创,转载请注明出处】http://blog.csdn.net/guyuealian/article/details/53113187
(一)C/C++语言宏定义##连接符和符#的使用
   (1) ## 连接符:在带参数的宏定义中, 用来将两个Token连接为一个Token,从而形成一个新的子串。注意这里连接的对象是Token就行,而不一定是宏的变量。
    例子:
#define XNAME(n) x ## n  

当出现int XNAME(1) = 14;时,会被替换为:

int x1=14;

     (2)#符:是将其后面的宏参数进行字符串化操作(Stringfication),即把宏参数变为一个字符串,简单说就是在对它所引用的宏变量 通过替换后在其左右各加上一个双引号。#符,也就是把传递过来的参数当成字符串进行替代。
    例子:
#define WARN_IF(EXP) do{ if (EXP) fprintf(stderr, "Warning: " #EXP "/n"); } while(0)

当出现WARN_IF (divider == 0);时,相当于如下替换:

do {if (divider == 0)fprintf(stderr, "Warning" "divider == 0" "/n");
} while(0);

可见#EXP将会被替换为【“divider == 0"】

C/C++语言宏定义##连接符和符#的使用相关推荐

  1. C语言宏定义##连接符和#符的使用及其它宏定义注意事项

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

  2. C语言宏定义##连接符和#符的使用

    C语言中如何使用宏C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念).下面对常遇到的宏的使用问题做了简单总结. 关于"#"和"## ...

  3. 【C++】46.宏定义##连接符和符#的使用

    推荐下面两篇博客: 1.C/C++语言宏定义##连接符和符#的使用 2.c++/c中的##连接符的使用 在c/c++语言中,我们可以使用##来对一些字符进行连接,方便使用,尤其是在宏定义中使用该符号, ...

  4. c语言宏定义的连接符##和#转字符串

    c语言宏定义的连接符有哪些 [此问题的推荐答案] (一)宏定义中的## 连接符与# 符 ## 连接符号由两个井号组成,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串. ...

  5. c语言中#39;xd#39;代表什么,关于C语言宏定义的技巧:#39;##39;和#39;###39;

    关于C语言宏定义的技巧:'#'和'##' '#'和'##' '#'和'##'是两个预处理运算符,只能在预处理的过程中使用.在带参数的宏定义中, '#'运算符后面应该跟一个参数,预处理器会把这个参数转换 ...

  6. c语言宏定义技巧和用法,关于C语言宏定义的技巧:'#'和'##'

    关于C语言宏定义的技巧:'#'和'##' '#'和'##' '#'和'##'是两个预处理运算符,只能在预处理的过程中使用.在带参数的宏定义中, '#'运算符后面应该跟一个参数,预处理器会把这个参数转换 ...

  7. 巧用c语言宏定义实现自动注释调试代码,C语言宏定义中的特殊用法

    C宏定义中的特殊用法 在分析一些C源码时,经常会遇到各种宏定义操作,本文即总结一下C语言宏定义中常见的预定义宏.调试宏:宏的条件编译用法及特殊的宏关键字用法. #undef 限定宏的作用域 一般来讲宏 ...

  8. C语言宏定义中#号的作用

    C语言宏定义中#号的作用 前言 #号的作用 前言 最近,在阅读uboot的源码过程中,发现了一段宏定义代码: #define U_BOOT_CMD_MKENT_COMPLETE(_name, _max ...

  9. 转载--c语言宏定义(1)

    作者:独舞风 链接:c语言宏定义(1) 1.为什么要有宏定义? 代码中某个特定数值需要参与运算,而且该数值作用于多个地方,当需要对该数值进行修改时,希望只改动一个地方就能实现该数值的全部更新:即便某个 ...

最新文章

  1. Java Date Time 教程-时间测量
  2. 《盘点那些秀你一脸的秒天秒地算法》(3)
  3. Zend Framework学习之Zend_Mail
  4. SQLAlchemy Script
  5. 主动安全,新华三融合生态之力!
  6. python调用系统命令_linux里面python调用系统命令问题
  7. Symfony1.4.11学习笔记(三):设置虚拟机
  8. java自动下载更新程序_android实现软件自动更新的步骤
  9. 美国伯克利大学计算机研究生学几年,美国加州大学伯克利分校计算机CS研究生申请条件一览...
  10. linux如何抓取本地socket,linux 本地socket
  11. 计算机软件录音注意事项,录音笔使用注意事项
  12. Objective-C之@类别小实例
  13. 双鉴探测器是哪两种探测方式结合_报警的基本知识
  14. 经纬财富:昭通炒现货白银技巧
  15. 治疗失眠的中医食疗方
  16. 微信小程序云开发联表查询【聚合】
  17. STM32F429第二十八篇之ADC
  18. 结对项目:SudokuGame
  19. 学计算机核显足够了吗,独立显卡、核心显卡和集成显卡的区别
  20. java web 网课_中国大学MOOCJava Web开发基础网课答案

热门文章

  1. ORACLE查询闪回
  2. Page.ClientScript.RegisterStartupScript() 方法与Page.ClientScript.RegisterClientScriptBlock() 方法...
  3. extjs的上传组件和HTML编辑器组件
  4. 常用 API 函数(5): 文本和字体函数
  5. jMenu 不添加item 直接自己添加监听actionPerformed不行mousePressed可以
  6. 4、线程范围内的数据共享之ThreadLocal
  7. hdu3870——平面图最小割
  8. 电缆桥架的拉挤玻璃钢材质优势
  9. nsfocus 十周年了 时间过得好快啊... 恭喜下...
  10. Swift 3 0 FMDB 初试