Скажем, у меня есть следующая структура:
typedef struct my_struct{
unsigned long a;
unsigned long b;
char* c;
unsigned int d1 :1;
unsigned int d2 :4;
unsigned int d3 :4;
unsigned int d4 :23;
} my_type, *p_type;
В настоящее время поле d3
определяется #define
, которое достигает от 0x00
до 0x0D
.
Собственно, d3
- это перечисление. Так что соблазнительно пойти и заменить
unsigned int d3 :4;
по
my_enum d3 :4;
Это безопасно/разрешено?
Код должен компилироваться с различными
- компиляторы (GCC, Visual Studio, встроенные материалы)
- платформы (Win32, Linux, встроенные материалы)
- конфигурации (скомпилировать как C, скомпилировать как С++)
Очевидно, я мог оставить определение d3
как есть и использовать перечисление в моем коде, назначить его d3
и т.д., но это не сработает с С++.