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

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

Описание

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

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

Объяснение

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

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

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

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

Примеры

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

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

}

Шашка помечает все восьмиугольные константы (кроме нуля) и все восьмиугольные выходные последовательности (кроме \0).

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

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

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

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

Группа: Лексические конвенции
Категория: Требуемая
Введенный в R2013b