簡體   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