AUTOSAR C++14 Rule M9-6-4

Именованные битовые поля со знаком целого типа должны иметь длину более одного бита

Описание

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

Именованные битовые поля со знаком целого типа должны иметь длину более одного бита.

Объяснение

Переменные с целочисленными типами битового поля со знаком length one bit могут иметь значения, которые не соответствуют ожиданиям разработчиков. Для образца целых типов со знаком фиксированной ширины, такой как std16_t иметь представление дополнения двух. В этом представлении однобитовая переменная имеет только бит знака, и значение переменных может быть 0 или -1.

Реализация Polyspace

Шашка помечает объявления именованных переменных, имеющие подписанные целочисленные типы битового поля с длиной, равной единице.

Типы битового поля с нулевой длиной не помечены.

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

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

Примеры

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

#include <cstdint>

typedef struct
{
   std::uint16_t IOFlag :1;    //Compliant - unsigned type
   std::int16_t InterruptFlag :1; //Noncompliant
   std::int16_t Register1Flag :2; //Compliant - Length more than one bit
   std::int16_t : 1; //Compliant - Unnamed
   std::int16_t : 0; //Compliant - Unnamed
   std::uint16_t SetupFlag :1; //Compliant - unsigned type
} InterruptConfigbits_t;

В этом примере несоответствует только второе объявление битового поля. Именованная переменная объявляется со знаком length type one bit.

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

Группа: Классы
Категория: Необходимый, Автоматизированный
Введенный в R2020b