I have built a working C library, that uses constants, in header files defined as
typedef struct Y {
union {
struct bit_field bits;
uint8_t raw[4];
}
I believe that C++11 allows you to write your own constructor like so:
union Foo
{
X x;
uint8_t raw[sizeof(X)];
Foo() : raw{} { }
};
This default-initializes a union of type Foo
with active member raw
, which has all elements zero-initialized. (Before C++11, there was no way to initialize arrays which are not complete objects.)