Объединение широкого строкового литерала со строковым макросом
У меня есть макрос для символьной строки следующим образом:
#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";