不应使用非标准转义字符
11.5 ID_literal_nonStandardEsc
非标准转义字符没有可移植性,也可能是忘了将反斜杠转义。
示例:
string path("C:\Files\x.cpp"); // Non-compliant
例中 \F 不是标准转义字符,\x 也不符合 16 进制转义字符的格式,这显然是路径中的反斜杠忘了转义。
附 C/C++ 标准转义字符:
'\a' // Alert
'\b' // Backspace
'\f' // Formfeed page break
'\n' // New line
'\r' // Carriage return
'\t' // Horizontal tab
'\v' // Vertical tab
'\\' // Backslash
'\?' // Question mark
'\'' // Single quotation mark
'\"' // Double quotation mark
'\0' // Null character
'\ddd' // Any character, ‘d’ is an octal number
'\xhh' // Any character, ‘h’ is a hex number
'\uhhhh' // Universal character name, ‘h’ is a hex number
'\Uhhhhhhhh' // Universal character name, ‘h’ is a hex number
依据
ISO/IEC 9899:1999 6.4.4.4
ISO/IEC 9899:2011 6.4.4.4
ISO/IEC 14882:2003 2.13.2(3)-undefined
ISO/IEC 14882:2011 2.14.3(3)-implementation
ISO/IEC 14882:2017 5.13.3(7)-implementation
参考
MISRA C 2004 4.1
MISRA C++ 2008 2-13-1