繁体   English   中英

在C ++预处理器中组合两个#defined符号

[英]Combining two #defined symbols in C++ preprocessor

我想要做:

#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) - 关闭但不完全

我想要的是什么?

令牌粘贴使用宏的参数。 所以试试吧

#define VERSION XY123
#define PASTE(x) MyApplication_ ## x
#define PRODUCT PASTE(VERSION)

##运算符参数替换发生之前起作用。 经典的解决方案是使用帮助器:

#define CONCAT2(a, b) a ## b
#define CONCAT(a, b) CONCAT2(a, b)

CONCAT(MyApplication_, VERSION)

计算机科学中的所有问题都可以通过额外的间接来解决:

#define JOIN_(X,Y) X##Y
#define JOIN(X,Y) JOIN_(X,Y)
#define VERSION XY123
#define PRODUCT JOIN(MyApplication_,VERSION)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM