代码行以反斜杠结尾,且与下一行连接后生成通用字符名称
C++-Undefined-Behavior-1
如果代码行以反斜杠结尾,预处理器会删除行尾的反斜杠和换行符,使其与下一行连接,如果连接后产生了以 \u 或 \U 开头的通用字符名称(universal character name)会导致未定义的行为。
示例:
auto s = "\u54\
0D"; // Undefined behavior
auto \u54\
0D = 'a'; // Undefined behavior
这种代码可能不会通过编译,也可能不会造成实际问题,但一定不具备可移植性。
依据
ISO/IEC 14882:2003 2.1(2)-undefined
ISO/IEC 14882:2011 2.2(2)-undefined