MISRA C++:2008 Rule 2-13-2

Восьмеричные константы (кроме нуля) и восьмеричные escape-последовательности (кроме "\0") не должны использоваться

Описание

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

Восьмеричные константы (кроме нуля) и восьмеричные escape-последовательности (кроме "\0") не должны использоваться.

Объяснение

Восьмеричные константы обозначаются начальным нулем. Разработчик или рецензент кода могут перепутать восьмеричную константу как десятичную константу с избыточным начальным нулем.

Восьмеричные escape-последовательности, начинающиеся с \ может также вызвать беспорядок. Непреднамеренно вводя 8 или 9 в последовательности цифры после \ повреждает escape-последовательность и вводит новую цифру. Разработчик или рецензент кода могут проигнорировать эту проблему и продолжить обрабатывать escape-последовательность как одну цифру.

Обменивайтесь сообщениями в отчете

Восьмеричные константы (кроме нуля) и восьмеричные escape-последовательности (кроме "\0") не должны использоваться.

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

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

Примеры

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

void func(void) {
  int busData[6];
  
  busData[0] = 100;
  busData[1] = 108;
  busData[2] = 052;      //Noncompliant
  busData[3] = 071;      //Noncompliant
  busData[4] = '\109';   //Noncompliant
  busData[5] = '\100';   //Noncompliant

}

Средство проверки отмечает все восьмеричные константы (кроме нуля) и все восьмеричные escape-последовательности (кроме \0).

В этом примере:

  • Восьмеричная escape-последовательность содержит цифру 9, которая не является восьмеричной цифрой. Эта escape-последовательность задала реализацией поведение.

  • Восьмеричная escape-последовательность \100 представляет номер 64, но средство проверки правила запрещает это использование.

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

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

Введенный в R2013b