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

需求:现有字符串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

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

你可能感兴趣的:(C/C++,嵌入式系统,linux,c++,linux,程序设计)