首页 > 极客资料 博客日记
c语言 宏的一些深层应用(##,#,宏函数)
2024-09-19 20:00:03极客资料围观21次
本篇文章分享c语言 宏的一些深层应用(##,#,宏函数),对你有帮助的话记得收藏一下,看极客之家收获更多编程知识
"##" 宏拼接
#define CONCATENATE(a, b) a ## b
CONCATENATE(student_, 1) // 将a和b拼接起来变成一个新的变量 -> student_1
#define CONS(a,b) int(a##e##b)
CONS(2,3) //将aeb拼接起来 -> 2e3 == 2000
"#" 转换为字符串
#define CONCATENATE(a, b) a ## b
#define STR(s) #s
STR(CONCATENATE(student_, 1))// 将a和b拼接起来变成一个新的变量 -> student_1 再转换为字符串 -> "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 宏名称( [形参列表] ) 替换文本
#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
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- Nuxt.js 应用中的 prerender:routes 事件钩子详解
- 【问题解决】Tomcat由低于8版本升级到高版本使用Tomcat自带连接池报错无法找到表空间的问题
- 【FAQ】HarmonyOS SDK 闭源开放能力 —Vision Kit
- 六、Spring Boot集成Spring Security之前后分离认证流程最佳方案
- 《JVM第7课》堆区
- .NET 8 高性能跨平台图像处理库 ImageSharp
- 还在为慢速数据传输苦恼?Linux 零拷贝技术来帮你!
- 刚毕业,去做边缘业务,还有救吗?
- 如何避免 HttpClient 丢失请求头:通过 HttpRequestMessage 解决并优化
- 让性能提升56%的Vue3.5响应式重构之“版本计数”