You create a universal character name by joining tokens with
## operator
This defect
occurs when two preprocessing tokens joined with a ## operator create
a universal character name. A universal character name begins with \u
or \U followed by hexadecimal digits. It represents a character not
found in the basic character set.
For instance, you form the character \u0401 by joining two
tokens:
#define assign(uc1, uc2, val) uc1##uc2 = val ... assign(\u04, 01, 4);
The C11 Standard (Sec. 5.1.1.2) states that if a universal character name is formed by token concatenation, the behavior is undefined.
Use the universal character name directly instead of producing it through token concatenation.
| Group: Programming |
| Language: C | C++ |
| Default: On for handwritten code, off for generated code |
Command-Line Syntax:
PRE_UCNAME_JOIN_TOKENS |
| Impact: Low |