Unicorn with delicious cookie
Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
>
>
>
V2602. MISRA. Octal and hexadecimal...
menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V2602. MISRA. Octal and hexadecimal escape sequences should be terminated.

16 Июл 2021

Данное диагностическое правило основано на руководстве MISRA (Motor Industry Software Reliability Association) по разработке программного обеспечения.

Это правило актуально только для C. Последовательности восьмеричных и шестнадцатеричных чисел внутри строковых и символьных литералов должны быть завершёнными. Это поможет избежать ошибок с определением позиции завершения escape-последовательности.

Рассмотрим пример:

const char *str = "\x0exit";

Строковый литерал в данном примере имеет длину в 4 символа, а не 5, как может показаться на первый взгляд. Последовательность '\x0e' считается за один символ с кодом 0xE, а не символ с нулевым кодом и букву 'e'.

Поэтому escape-последовательность должна быть завершена одним из двух способов:

  • завершением строкового литерала;
  • началом новой escape-последовательности.

Следующие 2 примера представляют собой правильный вариант завершения escape-последовательности:

const char *str1 = "\x0" "exit";
const char *str2 = "\x1f\x2f";

Данная диагностика классифицируется как:

  • MISRA-C-4.1