全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

【C语言进阶】如何灵活利用宏定义做字符串转换

时间:2022-08-29 08:51

人气:

作者:admin

标签: 字符串  C语言  宏定义 

导读:如何使用C语言的宏定义转换字符串?...

今天在恰好在项目开发的过程中,遇到了一个有关宏定义的问题。

项目运用的背景如下:

项目中有个头文件中定义了一个宏定义,比如是 #define CFG_LOGGER_NAME uart

然后,在某个C文件中需要讲这个3转换成对应的字符串类型,即为"uart";很明显,如果按以下的几种方式定义,肯定得不到期望的结果:

方式1: #defineCFG_LOGGER_NAME_STR "CFG_LOGGER_NAME"

方式2: #defineCFG_LOGGER_NAME_STR #CFG_LOGGER_NAME

方式3: #defineCFG_LOGGER_NAME_STR ##CFG_LOGGER_NAME

为了解决这个问题,特意再次去查看了有关C语言宏定义的语法,终于找到了解决方法,具体的思路是,需要用一个“中间宏函数”做转换:

#define CFG_LOGGER_NAME uart

#define TO_STRING(x) #x

#define _CFG_LOGGER_NAME_STR(x) TO_STRING(x)

#defineCFG_LOGGER_NAME_STR _CFG_LOGGER_NAME_STR(CFG_LOGGER_NAME)

就这样,经过上面的宏定义处理后,访问CFG_LOGGER_NAME_STR的值,取到的就是期望值"uart".

虽然方法很简单,但是里面却包含了宏定义最基础的语法知识,有机会可以再多多补充下宏定义相关的知识。

——————————————————————————————————————

附录,demo测试如下:

demo1demo2


审核编辑:汤梓红

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信