"##" 宏拼接
| #define CONCATENATE(a, b) a ## b |
| CONCATENATE(student_, 1) |
| #define CONS(a,b) int(a##e##b) |
| CONS(2,3) |
| |
"#" 转换为字符串
| #define CONCATENATE(a, b) a ## b |
| #define STR(s) #s |
| STR(CONCATENATE(student_, 1)) |
哈哈,你觉得上面注释说的是对的吗?nonono,我在编译器尝试用printf("%s", STR(CONCATENATE(student_, 1)));
输出了一下,输出是CONCATENATE(student_, 1)
。这个优先级问题本文就先不讨论啦,有兴趣的朋友可以自己去看看优先级的问题。
那如果我就是要输出student_1
怎么办呢?起始很简单看我下面操作!
| #define CONCATENATE(a, b) a ## b |
| #define _STR(s) #s |
| #define STR(s) _STR(s) |
这时候编译器的输出就是我们期望的student_1
了。至于原理,咱也不敢问,但是知道有这个用法就行了。
宏函数
| |
| #define DOUBLE(x) (x+x) |
| #define MAX(a,b) ((a)>(b)?(a):(b)) |
更多内容请参考以下文章:
https://blog.csdn.net/m0_62918577/article/details/127361768
https://www.cnblogs.com/hnrainll/archive/2012/08/15/2640558.html
https://blog.csdn.net/weixin_46187354/article/details/133611969
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2021-09-19 express请求数据的获取(get和post)body-parser
2021-09-19 防止npm被墙的小技巧
2021-09-19 npm包管理工具 --save和--save-dev的区别