AUTOSAR C++14 Rule M9-6-4

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

Описание

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

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

Объяснение

Переменные, которые имеют типы битового поля целого числа со знаком длины сила на один бит, имеют значения, которые не оправдывают надежды разработчика. Например, типы целого числа со знаком фиксированной ширины, такие как std16_t имейте дополнительное представление two. В этом представлении одноразрядная переменная имеет только знаковый бит, и значение переменных может быть 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;

В этом примере только второе объявление битового поля несовместимо. Именованная переменная объявляется с типом со знаком длины одним битом.

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

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