需求:现有字符串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
这是没有啥理论依据,无意间调出来的一种方式,原来直接这样就可以的啊啊!