C/C++ 在宏定义字符串中引用宏定义

32 篇文章 1 订阅
14 篇文章 0 订阅

需求:现有字符串A,B,C都包含字符串D,如:

#define stra    "123/456/789"
#define strb    "111/222/789"
#define strc    "333/444/789"
#define strd    "789"

以上是对这种情况的最简单粗暴的实现方式,这种方式的缺点就是每次strd改变的时候(如从"789"变成"abc")就需要替换所有的"789",那么有没有其他方式可以不用重复写"789"呢:

方式1:

#define stra    "123/456/"##strd
#define strd    "789"

想的就是用 ## 来连接两个字符串,结果编译报错;

方式2:

#define strlink(a,b)  a##b
#define strd    "789"
#define stra    strlink("123/456/",strd)

本源还是用 ## 连接两个字符串,但是采用带参宏定义的形式,结果VC9以上编译器支持,gcc不支持;

方式3:

#define strd    "789"
#define stra    "123/456/"strd

这是没有啥理论依据,无意间调出来的一种方式,原来直接这样就可以的啊啊!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值