MISRA C:2012 Rule 4.1

Восьмиугольные и шестнадцатеричные выходные последовательности должны быть прекращены

Описание

Определение правила

Восьмиугольные и шестнадцатеричные выходные последовательности должны быть прекращены.

Объяснение

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

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

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

Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».

Примеры

расширить все

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