[英]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.