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

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

Описание

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

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

Объяснение

Используя битовые поля требует, чтобы их базовые битные представления не были заданы реализацией. 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 ввод.

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

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