Вы создаете универсальное символьное имя, соединяя маркеры с ## оператор
Этот дефект возникает, когда два маркера предварительной обработки соединены с ## оператор создает универсальное символьное имя. Универсальное имя символа начинается с \u или \U с шестнадцатеричными цифрами. Он представляет символ, не найденный в основном наборе символов.
Например, вы формируете символ \u0401 путем присоединения двух маркеров:
#define assign(uc1, uc2, val) uc1##uc2 = val ... assign(\u04, 01, 4);
Стандарт C11 (раздел 5.1.1.2) утверждает, что если универсальное имя символа образовано конкатенацией маркеров, поведение не определено.
Используйте универсальное имя символа непосредственно вместо его создания посредством конкатенации маркеров.
| Группа: Программирование |
| Язык: C | C++ |
| По умолчанию: Вкл для рукописного кода, выкл для сгенерированного кода |
Синтаксис командной строки:
PRE_UCNAME_JOIN_TOKENS |
| Воздействие: Низкий |