Альтернативой использованию объединения является вместо этого использование методов для доступа к значениям, как вы, вероятно, должны делать в любом случае. Хотя это C ++, где вы просили C - но я предполагаю, что C ++ хорош, если вы используете VC ++.
#ifdef __cplusplus
struct Test {
int a() {
return *(int*)&values_[0];
}
void a(int value) {
*(int*)&values_[1] = value;
}
int b() {
return *(int*)&values_[1];
}
void b(int value) {
*(int*)&values_[1] = value;
}
int c() {
return *(int*)&values_[3];
}
void c(int value) {
*(int*)&values_[3] = value;
}
private:
char[8] values_;
};
#endif