经常写宏的可能会遇到这种问题,比如下面的例子

#NUM 1
#TEST(val, type) val##type

如果我们调用时写成TEST(aaa, 1)不会有什么问题,但是如果写成TEST(aaa, #NUM) 这时会发现#NUM不能展开,此时的解决方案可以写双层宏来解决,如下:

#NUM 1
#_Test (val, type) val##type
#Test(val, type) _Test(val, type)

此时如果调用TEST(aaa, #NUM)宏便能在第一层时就展开了。

另外有一篇宏的比较不错的例子,记录下来,以后查看方便http://blog.csdn.net/jiabinjlu/article/details/8037003

C 语言宏定义时紧跟#和##后面的宏不能展开的问题相关推荐

  1. 宏定义时对整数进行数据类型定义

    最近看代码时,发现宏定义时就对整数进行了数据类型定义,其实也是对宏定义的数据类型进行了定义. (1)定义为int型 #include <stdio.h> #include <stdl ...

  2. 【C语言】宏定义(不带参数的宏定义和带参数的宏定义)

    目录 一.不带参数的宏定义 1.定义 2.#undef 指令取消宏定义 二.带参数的宏定义 1.定义 2.宏定义参数替换的注意事项 三.带参数的宏定义和带参函数的区别 一.不带参数的宏定义 1.定义 ...

  3. unity android 宏定义,Unity各平台内置宏定义

    属性 方法 UNITY_EDITOR #define directive for calling Unity Editor scripts from your game code. UNITY_EDI ...

  4. 宏定义开关和debug printf,宏定义使用异或交换两数

    1.宏定义开关和debug printf #define DEBUG_PRINT 1#ifdef DEBUG_PRINT #define DEBUG(format, ...) printf(" ...

  5. c语言函数定义时涉及的基本要素是什么,C语言基础:函数的定义与调用

    在前面内容中我们调用了一个标准C的库函数,叫printf,那么如果我们想自己定义函数应该如何来编写程序呢?定义函数又有什么好处呢?因为我们在教材中提及到的例子主要目的是为了让读者对程序的原理有一定的了 ...

  6. Visual Studio中相对路径中的宏定义,你不了解的宏定义都在这里!

    $(RemoteMachine) 设置为"调试"属性页上"远程计算机"属性的值.有关更多信息,请参见更改用于 C/C++ 调试配置的项目设置. $(Refere ...

  7. php 如何宏定义,php – 在html中实现宏定义的方法

    也许显而易见,但C预处理器可以完成这项工作. index._html #define _em(a) a #define _image(a, b) #define _list(a, b, c) a \ ...

  8. c int最小值的宏_C语言宏定义的妙用!用完软硬件效率蹭蹭涨!

    1 概述 在工程规模较小,不是很复杂,与硬件结合紧密,要求移植性的时候,可采用宏定义简化编程,增强程序可读性. 当宏作为常量使用时,C程序员习惯在名字中只使用大写字母.但是并没有如何将用于其他目的的宏 ...

  9. 如何用C语言改变宏定义的大小,C语言中宏定义使用的小细节

    C语言中宏定义使用的小细节 #pragma#pragma 预处理指令详解 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#p ...

最新文章

  1. 对AI行业未来发展的一些看法
  2. const在指针中的用法
  3. 不需要SFU实现WebRTC联播实践
  4. Intel Edision开发工具简介
  5. 两种类型的Spark RDD task解析以及iterator解析 -- (视频笔记)
  6. 【自己给自己题目做】:如何在Canvas上实现魔方效果
  7. 如何在Ubuntu 11.10下安装Java
  8. 利用计算机进行绘制建筑图纸,工程计算机制图.pdf
  9. 为什么 npm 要为每个项目单独安装一遍 node_modules?
  10. nodeJS之域名DNS
  11. Linux 下 4 种禁用 Root 登陆的方法,你掌握了哪几种呢?
  12. 搭建Web和FTP站点
  13. 【AllenNLP】: 自定义predictor—输入文本输出中文
  14. Type-c与micro usb 的对应关系
  15. 中国高技术产业统计年鉴(1995-2021年)
  16. VTN国际品牌会员俱乐部 聚集高净值圈层人群 引领高品质生活方式
  17. C++调用libVLC播放视频
  18. ubuntu中耳机声音小的解决方案
  19. 【rfc5506】RTCP mode
  20. Java实现 LeetCode 790 多米诺和托米诺平铺(递推)

热门文章

  1. java计算机毕业设计-酒店疫情防控系统-源码+数据库+lw文档+系统
  2. Win32窗口机制和消息机制整体流程
  3. 机器学习毕业设计 大数据股票量化分析与预测系统 - python
  4. ArcEngine根据属性分割要素类的实现方法
  5. android代码zip怎么用,Android平台实现Zip文件解压缩
  6. 【Wiki】XWiki安装教程_War包版本
  7. Java 密码复杂度校验
  8. 2022-2028全球及中国动态心律失常监测装置行业研究报告
  9. Web3创业具备创新爆炸式增长的所有要素
  10. 天天动听 悬浮歌词(迷你歌词)效果解读 .