Ошибки компиляции при использовании перечислимых классов с явным типом в битовых полях (gcc C ++ 0x / C ++ 11)

Я счастливо компилировал свой код с GCC без проблем в течение последних трех месяцев, пока я не перестроил свой кросс-компилятор, когда я обнаружил, что получаю сообщение «error: bit-field ‘…» с нецелым типом ».

Пример оскорбительного перечисления ниже:

typedef unsigned char byte;

enum class opStatus : byte
{
/* Process has yet to begin execution */
Ready,
/* Process can resume execution */
Started,
/* Process has completed */
Finished,
/* Process is handling shutdown */
Finishing,
};

struct // Example usage
{
opStatus Status : 2;
};

Почему это происходит?

2

Решение

Сделайте битовую ширину 8. В конце концов, это байт.

Как только я это сделал (и добавил имя для структуры),

g++ -std=c++11

не дал мне ни предупреждения, ни ошибки.

1

Другие решения

Других решений пока нет …