我想这样做:
#define VERSION XY123
#define PRODUCT MyApplication_VERSION
因此PRODUCT实际上是MyApplication_XY123。我尝试过使用合并运算符##,但成效有限......
#define VERSION XY123
#define PRODUCT MyApplication_##VERSION
=> MyApplication_VERSION
#define VERSION XY123
#define PRODUCT MyApplication_##(VERSION)
=> MyApplication_(XY123) - 关闭但不完全
我想要的是什么?
答案 0 :(得分:7)
令牌粘贴使用宏的参数。所以试试这个
#define VERSION XY123
#define PASTE(x) MyApplication_ ## x
#define PRODUCT PASTE(VERSION)
答案 1 :(得分:3)
{/ 1}}运算符在参数替换之前执行 地点。经典的解决方案是使用帮助器:
##
答案 2 :(得分:1)
计算机科学中的所有问题都可以通过额外的间接来解决:
#define JOIN_(X,Y) X##Y
#define JOIN(X,Y) JOIN_(X,Y)
#define VERSION XY123
#define PRODUCT JOIN(MyApplication_,VERSION)