Определение строковых литералов-констант один раз как char const* и wchar const*C++

Программы на C++. Форум разработчиков
Anonymous
Определение строковых литералов-констант один раз как char const* и wchar const*

Сообщение Anonymous »

Из-за ограничений домена, с которым я работаю, мне нужно определить строковые литералы как char const* и wchar const*, например:

Код: Выделить всё

constexpr auto C_VAR_NAME_1 = "MY_VAR_NAME_1";
constexpr auto C_VAR_NAME_2 = "MY_VAR_NAME_2";
...

constexpr auto W_VAR_NAME_1 = L"MY_VAR_NAME_1";
constexpr auto W_VAR_NAME_2 = L"MY_VAR_NAME_2";
...
У меня много констант, и я бы не хотел дважды определять одно и то же фактическое имя переменной (что может привести к некоторой опечатке и, следовательно, к несовпадающим именам), поэтому я использовал такой макрос:

Код: Выделить всё

#define WTEXT_IMPL(name) L##name
#define WTEXT(name)      WTEXT_IMPL(name)

#define MACRO_VAR_NAME_1 "MY_VAR_NAME_1"
#define MACRO_VAR_NAME_2 "MY_VAR_NAME_2"
...

constexpr auto C_VAR_NAME_1 = MACRO_VAR_NAME_1;
constexpr auto C_VAR_NAME_2 = MACRO_VAR_NAME_2;
...
constexpr auto W_VAR_NAME_1 = WTEXT(MACRO_VAR_NAME_1)
constexpr auto W_VAR_NAME_2 = WTEXT(MACRO_VAR_NAME_2)
...
Это работает, но, если возможно, я бы хотел избавиться от макросов; поэтому мой вопрос: можно ли добиться того же результата во время компиляции, используя простой стандарт C++ без макросов? Заранее благодарю за помощь.

Подробнее здесь: https://stackoverflow.com/questions/589 ... char-const

Вернуться в «C++»