MISRA C:2012 Rule 4.1

Должны быть отключены восьмеричные и шестнадцатеричные escape-последовательности

Описание

Управляйте определением

Должны быть отключены восьмеричные и шестнадцатеричные escape-последовательности.

Объяснение

Существует потенциал для беспорядка, если восьмеричная или шестнадцатеричная escape-последовательность сопровождается другими символами. Например, символьная константа '\x1f' состоит из отдельного символа, тогда как символьная константа '\x1g' состоит из этих двух символов '\x1' и 'g'. Способ, которым мультисимвольные константы представлены как целые числа, задан реализацией.

Если каждая восьмеричная или шестнадцатеричная escape-последовательность в символьной константе или строковом литерале отключена, вы уменьшаете потенциальный беспорядок.

Поиск и устранение проблем

Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.

Примеры

развернуть все

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*/		

int c1 = '\141t';             /* Non-compliant */				
int c2 = '\141\t';            /* Compliant - Terminated by another escape sequence*/		

В этом примере нарушено правило, когда escape-последовательность не отключена с концом строкового литерала или другой escape-последовательности.

Проверяйте информацию

Группа: наборы символов и лексические соглашения
Категория: необходимый
Категория AGC: необходимый
Введенный в R2014b