Объединение широкого строкового литерала со строковым макросом

У меня есть макрос для символьной строки следующим образом:

#define APPNAME "MyApp"

Теперь я хочу построить широкую строку, используя этот макрос, выполнив что-то вроде:

const wchar_t *AppProgID = APPNAME L".Document";

Однако это приводит к ошибке компиляции "конкатенация несоответствующих строк".

Есть ли способ преобразовать макрос APPNAME в широкий строковый литерал?

2 ответа

Решение

Ты пробовал

#define APPNAME "MyApp"

#define WIDEN2(x) L ## x
#define WIDEN(x) WIDEN2(x)

const wchar_t *AppProgID = WIDEN(APPNAME) L".Document";

Без макросов:

      const wchar_t *AppProgID = L"" APPNAME ".Document";
Другие вопросы по тегам