exponenta event banner

Правило AUTOSAR C++ 14 M2-13-2

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

Описание

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

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

Объяснение

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

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

}

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

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

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

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

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

Группа: Лексические конвенции
Категория: Обязательно, Автоматизировано
Представлен в R2019a