Юра (29.01.2014 21:10, просмотров: 1) ответил fk0 на Как d выравнять на границу sizeof(int) ? Менять тип d -- нельзя.
Мозги замерзли. Приходит наум только лобовое решение. typedef struct {
int a;
short b;
union{
char char_c;
int int_c;
}char2;
char d[];
}s;
#define c char2.char_c
int main(){
s sss; // Создать экземпляр для примера
sss.a = 5; // Пример обращения
sss.c = 6; // Пример обращения
printf("sizeof(struct s)=%u\n", sizeof( s )); // без "struct"!
printf("offsetof(struct s, a)=%u\n", offsetof(s, a));
printf("offsetof(struct s, b)=%u\n", offsetof(s, b));
printf("offsetof(struct s, c)=%u\n", offsetof(s, c));
printf("offsetof(struct s, d)=%u\n", offsetof(s, d[0]));
return 0;
}