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


审核编辑:汤梓红

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

    关注

    180

    文章

    7528

    浏览量

    128386
  • 字符串
    +关注

    关注

    1

    文章

    549

    浏览量

    20105
  • 宏定义
    +关注

    关注

    0

    文章

    48

    浏览量

    8926
收藏 人收藏

    评论

    相关推荐

    C语言字符串函数详解

    , int c);查找字符c字符串string中首次出现的位置, NULL结束符也包含在查找中.返回一个指针, 指向字符
    发表于 06-23 23:33

    字符串----数值转换

    请问在C语言里怎么将labview发送出去的字符串转换为十进制数值啊?
    发表于 12-05 12:45

    C语言定义中#和##的作用

    #和##的作用是:前者将定义的变量转化为字符串;后者将其前后的两个定义中的两个变量无缝拼接在一起转化为
    发表于 08-23 18:22

    C语言中的

    定义是我们C语言学习中非常重要的内容。一些基础的用法大家都比较清楚了,我们简单总结一下。1.定义
    发表于 12-13 15:32

    数据转换、SQL存储,十六进制字符串、正常字符串

    ”,我们要做的是,当使用正常显示时,仍然将其显示为“41 42 43 44 ”。下图是将正常字符串转换为十六进制显示的正常字符串,思想是,先将字符串
    发表于 05-27 10:29

    什么是指向字符串指针?

    组成的句子,在C语言中被称为“字符串”。  了解完字符串是由多个字符组成的之后,想要存储字符串
    发表于 03-15 14:19

    C语言中如何将数字转换字符串

    C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换字符串。以下是用itoa()函数将整数转换
    发表于 07-14 06:31

    请问C语言中将数字转换字符串的方法是什么?

    请问C语言中将数字转换字符串的方法是什么?
    发表于 10-19 08:36

    嵌入式C语言字符串字符指针的相关资料分享

    C语言字符串字符指针  今天在写嵌入式代码时,遇到了个易错的,关于嵌入式CCC语言字符串
    发表于 12-15 08:05

    字符串字符数组的转换字符数组介绍

    字符串字符数组的转换字符数组 -----》字符串1:直接在构造String时转换。char[]
    发表于 01-12 07:01

    字符串逆序的方法分享

    分享一道经典的C语言题目。题目:字符串逆序。如:hello world转换为dlrow olleh。流程图:代码:左右滑动查看全部代码>>>/*-程序功能:
    发表于 02-28 07:17

    c语言如何对比字符串是否相同?

    c语言如何对比字符串是否相同把一个字符串变量直接赋值给另一个变量怎么实现
    发表于 11-02 07:45

    C语言-字符串处理

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

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

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

    c语言字符串定义

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