#define аргумент заштрихован, но с широкой строкой L & quot; вместо & quot;

Мне нужно зачеркнуть #define аргумент в пользу широкой строки.

Так что пока

#define c(x) x,#x

используется в качестве:

{c(maria),0,false},

дает:

{maria,"maria",0,false} // maria is a member of an enum.

Я не знаю, как сделать то же самое, но создать широкую строку.

Я имею в виду, вместо того, чтобы иметь "maria" имеющий L"maria"

1

Решение

Ты можешь сделать:

#define c(x) x,L###x

## объединение необходимо объединить L и строка в кавычках в один токен предварительной обработки (как L является частью Строка литерала маркер).

#define c(x) x,L###x
c(Hello)

Вставить это через препроцессор (с clang++ -E test.cpp) дает:

Hello,L"Hello"
3

Другие решения

Почему бы тебе не попробовать

#define c(x) x,L#x

РЕДАКТИРОВАТЬ: Очевидно, это работает только в Visual Studio. Так что вы должны пойти с L###x как другие предложили.

0

По вопросам рекламы [email protected]