1 【C语言进阶】如何灵活利用宏定义做字符串转换-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

嵌入式物联网开发 来源:嵌入式物联网开发 作者:嵌入式物联网开发 2022-08-29 08:51 次阅读

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

项目运用的背景如下:

项目中有个头文件中定义了一个宏定义,比如是 #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


审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7604

    浏览量

    136676
  • 字符串
    +关注

    关注

    1

    文章

    578

    浏览量

    20505
  • 宏定义
    +关注

    关注

    0

    文章

    50

    浏览量

    9003
收藏 人收藏

    评论

    相关推荐

    C++字符串string

    string是C++编程语言中的字符串。在C++中字符串处理可以使用c
    的头像 发表于 07-10 00:26 1271次阅读
    <b class='flag-5'>C</b>++<b class='flag-5'>字符串</b>string

    C语言定义的使用技巧

    #define命令是C语言中的一个定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为
    发表于 09-05 10:12 1158次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>中<b class='flag-5'>宏</b><b class='flag-5'>定义</b>的使用技巧

    C语言教程之字符串替换

    C语言教程之字符串替换,很好的C语言资料,快来学习吧。
    发表于 04-25 15:49 0次下载

    C语言教程之回文字符串

    C语言教程之回文字符串,很好的C语言资料,快来学习吧。
    发表于 04-25 15:49 0次下载

    C语言字符串转数字实现方法

    C/C++语言中没有专门的字符串变量,通常用字符数组来存放字符串
    发表于 11-14 17:50 1.3w次阅读

    C语言字符串匹配和数据提取源码

    C语言字符串匹配与数据提取源码
    的头像 发表于 02-27 15:42 2390次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b><b class='flag-5'>字符串</b>匹配和数据提取源码

    C++之字符串类学习的总结

    一般我们在c语言要实现对字符串操作的话,一般是采用字符数组或者一组函数来实现的,为啥这样呢,那是因为c
    的头像 发表于 12-24 16:24 752次阅读

    C语言编程字符串函数汇总资源下载

    C语言编程字符串函数汇总资源下载
    发表于 04-15 16:18 9次下载
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>编程<b class='flag-5'>字符串</b>函数汇总资源下载

    C语言总结_字符串全方位练习

    C语言字符串全方位练习,涉及知识点:字符串解析、大小写判断、字符串插入、字符串删除、
    的头像 发表于 08-14 09:41 1484次阅读

    C语言-字符串处理

    字符串C语言里使用非常多,因为很多数据处理都是文本,也就是字符串,特别是设备交互、web网页交互返回的几乎都是文本数据。 这篇文章就介绍字符串
    的头像 发表于 08-14 10:05 1746次阅读

    C语言中的定义

    #define命令是C语言中的一个定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为
    的头像 发表于 09-28 16:05 3443次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>中的<b class='flag-5'>宏</b><b class='flag-5'>定义</b>

    C语言字符串的引用方式

    C语言程序中,字符串是存放在字符数组中的。 2. 用字符数组存放一个字符串,可以通过数组名和
    的头像 发表于 03-10 14:57 1905次阅读

    C语言定义字符串的几种方法

    C语言定义字符串有哪些方法?
    的头像 发表于 03-31 09:41 3552次阅读

    c语言字符串定义

    字符串定义、初始化、操作和常见问题。 字符串定义和初始化 在C语言中,
    的头像 发表于 11-24 10:02 1929次阅读

    C语言字符串编译函数介绍

    C语言中,字符串实际上是使用null字符O'终止的一维字符数组。因此,一个以null结尾的
    的头像 发表于 03-07 16:18 500次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b><b class='flag-5'>字符串</b>编译函数介绍