Main Content

MISRA C++:2023 Rule 5.13.2

Octal escape sequences, hexadecimal escape sequences and universal character names shall be terminated

Since R2024b

Description

Rule Definition

Octal escape sequences, hexadecimal escape sequences and universal character names shall be terminated.

Rationale

There is potential for confusion if an octal or hexadecimal escape sequence, or universal character name is followed by other characters. For example, the character constant '\x1f' consists of a single character, whereas the character constant '\x1g' consists of the two characters '\x1' and 'g'. The manner in which multicharacter constants are represented as integers is implementation-defined.

If every octal and hexadecimal escape sequence and universal character name in a character constant or string literal is terminated, you reduce potential confusion.

Polyspace Implementation

The rule checker reports violations when an escape sequence or universal character name is not terminated with the end-of-string literal or another escape sequence.

Troubleshooting

If you expect a rule violation but Polyspace® does not report it, see Diagnose Why Coding Standard Violations Do Not Appear as Expected.

Examples

expand all

In this example, the rule is violated when an escape sequence is not terminated with the end of string literal or another escape sequence.

const char * s1 = "\x41g";     /* Non-compliant */
const char * s2 = "\x41" "g";  /* Compliant - Terminated by end of literal */
const char * s3 = "\x41\x67";  /* Compliant - Terminated by another escape sequence*/

const char * c1 = "\1412";   /* Non-compliant */
const char * c2 = "\141\t";  /* Compliant - Terminated by another escape sequence*/
const char * string2 = "\u1234F600"; /*Non-compliant*/

const char * string2 = "\U1234F600"; /*Compliant - universal charcater sequence consists
                                 of 8 digits and terminates with the end of literal*/

Check Information

Group: Lexical Conventions
Category: Required

Version History

Introduced in R2024b