在C/C++中,宏定义是由define完成的,define中有三个特殊的符号值得我们注意:
1. #:在宏展开的时候会将#后面的参数替换成字符串,如:
#define p(exp) printf(#exp);
调用p(asdfsadf)的时候会将#exp换成"asdfsadf"
2. ##:将前后两个的单词拼接在一起。例如《The C Programming Language》中的例子:
#define cat(x,y) x##y
调用cat(var, 123)展开后成为var123.
3. #@:将值序列变为一个字符
#define ch(c) #@c
调用ch(a)展开后成为'a'.
自己写了一小段测试程序:
#define A(a,b) a##b
#define B(a) #a
#define C(a) #@a
#include <iostream>
using namespace std;
void main()
{
int v = 0,v1 = 1,v12 = 2;//v stands for var
cout << A(v1,2) << endl;
cout << B(v1) << endl;
cout << C(v) << endl;
}
结果为:
1
v1
v
在c++面对对象化编程还可以这样用:
#define A
public://此处加一些成员,并且可以在成员名上用##下一些功夫
class Object
{
A
};

C/C++宏的特殊符号相关推荐

  1. C语言的预处理器无法先展开宏再拼接符号?可以!

    背景 最近接到一个需求,要实现一个脚本,能提取.h文件里定义的所有全局变量的值,这些全局变量都是结构体变量,名字是结构体类型名加场景后缀--每个.h对应的场景都是唯一的,所以.h内所有变量名的后缀一致 ...

  2. latex宏包特殊符号集锦

    转自:http://blog.sina.com.cn/s/blog_5e16f1770100gyyc.html bbding 有些符号例如星形类.铅笔类和花朵类符号,以前在 LaTeX 中无法生成,现 ...

  3. C++ 编译宏的一些符号

    目前正在学习C++宏内容 C++的宏真的比较巧妙,本来以为一两个小知识点可以记下来,但是在查找资料的时候发现了很多以前没有注意到的地方,用来记录一下,以免后续文档丢失,先记录在网站种. 1.宏定义: ...

  4. c 宏定义用法#define

    转自:https://blog.csdn.net/boring_wednesday/article/details/78756696 宏定义 语法     #define name Stuff #de ...

  5. 大牛深入浅出讲解C语言#define宏定义应用及使用方法

    在C语言中,我们使用#define来定义宏.在C程序编译的预处理阶段,预处理器会把宏定义的符号替换成指定的文本. 不带参数的宏 关于宏最常见的就是用来定义数值常量的名称,即没有参数的宏定义,采用如下形 ...

  6. c语言 #define dpath .exe是什么意思,C语言宏定义#define

    姓名:吕彬 学号:1613014035 [嵌牛导读]#define 宏定义是个演技非常高超的替身演员,但也会经常耍大牌的,所以我们用它要慎之又慎.它可以出现在代码的任何地方,从本行宏定义开始,以后的代 ...

  7. Delphi连接AutoCAD_计算任意线条的长度宏的嵌套

    在AutoCAD里可以通过 List 和Area命令求的样条曲线等任意一条曲线的长度.但是要在delphi得到AutoCAD里任意一条曲线的长度就需要编写宏,然后再将宏嵌入到Delphi里 这是在Au ...

  8. 【嵌入式】C语言高级编程-可变参数宏(12)

    00. 目录 文章目录 00. 目录 01. 可变参数宏概述 02. ##符号 03. 可变参宏另外一种写法 04. 内核中的可变参数宏 05. 附录 01. 可变参数宏概述 #include < ...

  9. WebRTC Linux ADM 实现中的符号延迟加载机制

    ADM(AudioDeviceModule)在 WebRTC 中主要用于音频数据的录制采集和音频数据的播放,这里是 WebRTC 的实时音视频系统与系统的音频硬件衔接的地方.WebRTC 为 Linu ...

最新文章

  1. 全方位绕过软WAF攻略
  2. 腾讯内部产品课:细分用户
  3. HDU - 5017 Ellipsoid(三分套三分/模拟退火)
  4. python二进制、字符编码及文件操作
  5. JS file图片即选即得显示,前端交互图片即选即得
  6. 解决「matplotlib 图例中文乱码」问题
  7. Leetcode每日一题:108.convert-sorted-array-to-binary-search-tree(有序数组转成BST)
  8. 文件 md5 查看 命令
  9. Linux的相关资源帖
  10. Google Code Review 浏览评论中的CL
  11. 剑指 只出现一次的数字
  12. JMP数据清洗之“拆分” — 快速实现一列拆分为多列
  13. 木马的远程控制和清除 实验
  14. Atiitt 知识图谱的艺术 艾提拉著 目录 1. 常见知识图谱的处理技术 1 2. 常用的公开知识图谱如DBpedia, Freebase, Yago,Openkg等 2 3. 构建知识图谱的方
  15. [渝粤教育] 南通大学 大学计算机信息技术基础 参考 资料
  16. 零代码上线小布对话技能:技能平台的实践与思考
  17. QT——可视化界面ui
  18. nn.BatchNorm2d() 手推计算步骤
  19. RK3588开发板的入门指南:如何开始在RK3588开发板上进行安卓开发?
  20. TDH sql及plsql的调优

热门文章

  1. POJ 1795 DNA Laboratory 已被翻译
  2. 记录一次canvas小白做相册功能的过程
  3. 发挥数字化平台优势,电子元器件采购商城系统助力企业改变固有低效流程
  4. 小说作者推荐:没有颜色的无合集
  5. ESP8266-01s MQTT固件烧录
  6. Vue组件通信:父传子、子传父、跨组件通信
  7. HTTP协议-get与post请求
  8. APP的三种类型以及区分方法
  9. /oa/web应用程序中的服务器错误修复,如何处理OA系统在线阅读或编辑文档时weboffice控件提示“文件存取错误”的问题?...
  10. C4D模型工具—优化