V2602. MISRA. Octal and hexadecimal escape sequences should be terminated.
This diagnostic rule is based on the MISRA (Motor Industry Software Reliability Association) software development standard.
This rule applies only to C. Sequences of octal and hexadecimal numbers inside string and character literals must be terminated. This helps avoid errors when determining where an escape sequence ends.
const char *str = "\x0exit";
This string literal is 4 characters long, instead of 5, as it may seem at first. The '\x0e' sequence is one character that has the 0xE code - not a character, that has a zero code, followed by the letter 'e'.
To avoid this confusion, one must terminate the escape sequence in one of two ways:
- terminating the string literal;
- starting a new escape-sequence.
The 2 examples below show the right way to terminate an escape sequence:
const char *str1 = "\x0" "exit"; const char *str2 = "\x1f\x2f";
This diagnostic is classified as: