Скажем, у меня есть следующая структура:
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
s, которые простираются от 0x00
до 0x0D
.
На самом деле d3
— это перечисление. Так что заманчиво пойти дальше и заменить
unsigned int d3 :4;
по
my_enum d3 :4;
Это безопасно/разрешено?
Код должен компилироваться с различными
Очевидно, я мог бы оставить определение d3
как есть и использовать перечисление в своем коде, присвоить его d3
и так далее, но это не будет работать с C++.