Как объединить две широкие строки с помощью макроса в C? - PullRequest
1 голос
/ 30 сентября 2010

Я хочу объединить две широкие строки с помощью макроса, поэтому я определил некоторые макросы:

#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)


///151621/preobrazovat-token-preprotsessora-v-stroku
#define PRODUCT_ELASTOS_VERSION STR(VERSION_MAJOR) "." \
                                STR(VERSION_MINOR) "." \
                                STR(VERSION_BUILD) "." \
                                STR(VERSION_REVISION)

Теперь я хочу определить новый макрос PRODUCT_ELASTOS_VERSION_W, используя макрос PRODUCT_ELASTOS_VERSION, его значение должно быть L "1.1.0.0" .так как я могу определить этот макрос?TOWSTRING (PRODUCT_ELASTOS_VERSION) - неправильный ответ.

А если я хочу объединить строку, как мне написать?L "v" TOWSTRING (PRODUCT_ELASTOS_VERSION) не может получить широкую строку L "v1.1.0.0".

1 Ответ

0 голосов
/ 30 сентября 2010

Во-первых, 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...