Я счастливо компилировал свой код с 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;
};
Почему это происходит?
Сделайте битовую ширину 8. В конце концов, это байт.
Как только я это сделал (и добавил имя для структуры),
g++ -std=c++11
не дал мне ни предупреждения, ни ошибки.
Других решений пока нет …