[英]How to concatenate two wide strings using a macro in C?
我想使用一個宏來連接兩個寬字符串,所以我定義了一些宏:
#define VERSION_MAJOR 1
#define VERSION_MINOR 1
#define VERSION_BUILD 0
#define VERSION_REVISION 0
#define _STR(s) #s
#define STR(s) _STR(s)
#define _TOWSTRING(x) L##x
#define TOWSTRING(x) _TOWSTRING(x)
//http://stackoverflow.com/questions/240353/convert-a-preprocessor-token-to-a-string
#define PRODUCT_ELASTOS_VERSION STR(VERSION_MAJOR) "." \
STR(VERSION_MINOR) "." \
STR(VERSION_BUILD) "." \
STR(VERSION_REVISION)
現在,我想使用宏PRODUCT_ELASTOS_VERSION定義新的宏PRODUCT_ELASTOS_VERSION_W,其值應為L“ 1.1.0.0”。 那我怎么定義這個宏呢? TOWSTRING(PRODUCT_ELASTOS_VERSION)是錯誤的答案。
如果要串聯字符串,應該怎么寫? L“ v” TOWSTRING(PRODUCT_ELASTOS_VERSION)無法獲取寬字符串L“ v1.1.0.0”。
首先, PRODUCT_ELASTOS_VERSION
不會擴展為“ 1.1.0.0”,而是會擴展為
"1" "." "1" "." "0" "." "0"
保持相同的結構,您可以定義另一個標識符,擴展為
L"1" L"." L"1" L"." L"0" L"." L"0"
與
#define _LSTR(s) L ## #s
#define LSTR(s) _LSTR(s)
#define ANOTHER_IDENTIFIER LSTR(VERSION_MAJOR) L"." \
LSTR(VERSION_MINOR) L"." \
LSTR(VERSION_BUILD) L"." \
LSTR(VERSION_REVISION)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.