簡體   English   中英

如何在C中使用宏連接兩個寬字符串?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM