MISRA C++:2008 Rule 9-6-3

Битовые поля не должны иметь перечислимого типа

Описание

Примечание

Используйте Bug Finder вместо Code Prover для проверки правил кодирования. Поддержка кодирования правил, регистрируясь в Code Prover будет удалена в будущем релизе. См. Вопросы совместимости.

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

Битовые поля не должны иметь перечислимого типа.

Объяснение

Используя битовые поля требует, чтобы их базовые битные представления не были заданы реализацией. ISO/IEC 14882:2003 явным образом не задает со знаком из базового битного представления enum типы. Поскольку знак enum тип зависит от реализации, точного количества битов, которое требуется, чтобы представлять значения в enum задан реализацией.

Чтобы избежать кода, который ведет себя по-другому в различных реализациях и ошибках, которые затрудняют, чтобы диагностировать, не используйте enum типы как битовые поля.

Реализация Polyspace

Polyspace® сообщает нарушение этого правила, когда вы используете enum типы как битовые поля.

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

Если вы ожидаете нарушение правила, но не видите его, относитесь, чтобы Диагностировать, Почему Кодирующие Стандартные Нарушения Не Появляются как ожидалось.

Примеры

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

enum Spin {CW, CCW};
void foo(){
	struct DataStruct{
		Spin electron:2; //Noncompliant
	};
}

В этом примере Polyspace отмечает объявление объекта electron как немного поля, потому что electron enum ввод.

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

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

Вопросы совместимости

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

Не рекомендуемый запуск в R2021b

Введенный в R2013b