Say, I've got the following struct:
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;
The field d3
is currently defined by #define
s that reach from 0x00
until 0x0D
.
Actually, d3
is an enumeration. So it's tempting to go ahead and replace
unsigned int d3 :4;
by
my_enum d3 :4;
Is this safe/allowed?
The code has to compile with various
- compilers (GCC, Visual Studio, embedded stuff)
- platforms (Win32, Linux, embedded stuff)
- configurations (compile as C, compile as C++)
Obviously, I could leave the definition of d3
as it is and use the enum in my code, assign it to d3
and so on but that's not going to work with C++.