Mr.*_*Boy 9 c++ c-preprocessor
我想要做:
#define VERSION XY123
#define PRODUCT MyApplication_VERSION
Run Code Online (Sandbox Code Playgroud)
所以PRODUCT实际上是MyApplication_XY123.我尝试过使用合并运算符##,但成效有限......
#define VERSION XY123
#define PRODUCT MyApplication_##VERSION
Run Code Online (Sandbox Code Playgroud)
=> MyApplication_VERSION
#define VERSION XY123
#define PRODUCT MyApplication_##(VERSION)
Run Code Online (Sandbox Code Playgroud)
=> MyApplication_(XY123) - 关闭但不完全
我想要的是什么?
令牌粘贴使用宏的参数.所以试试吧
#define VERSION XY123
#define PASTE(x) MyApplication_ ## x
#define PRODUCT PASTE(VERSION)
Run Code Online (Sandbox Code Playgroud)
##运算符在进行参数替换之前执行操作。经典的解决方案是使用助手:
#define CONCAT2(a, b) a ## b
#define CONCAT(a, b) CONCAT2(a, b)
CONCAT(MyApplication_, VERSION)
Run Code Online (Sandbox Code Playgroud)