Мне нужно зачеркнуть #define
аргумент в пользу широкой строки.
Так что пока
#define c(x) x,#x
используется в качестве:
{c(maria),0,false},
дает:
{maria,"maria",0,false} // maria is a member of an enum.
Я не знаю, как сделать то же самое, но создать широкую строку.
Я имею в виду, вместо того, чтобы иметь "maria"
имеющий L"maria"
Ты можешь сделать:
#define c(x) x,L###x
##
объединение необходимо объединить L
и строка в кавычках в один токен предварительной обработки (как L
является частью Строка литерала маркер).
#define c(x) x,L###x
c(Hello)
Вставить это через препроцессор (с clang++ -E test.cpp
) дает:
Hello,L"Hello"
Почему бы тебе не попробовать
#define c(x) x,L#x
РЕДАКТИРОВАТЬ: Очевидно, это работает только в Visual Studio. Так что вы должны пойти с L###x
как другие предложили.