Кстати, в конкретном случае typedef позволил бы избавиться от
union'а: #include <stdio.h>
#include <stdint.h>
typedef struct{
uint8_t a : 1;
uint8_t b : 1;
} ab_t;
typedef struct{
ab_t flags;
double shnyagaD;
int64_t shnyagaI64;
} test_t;
int main(){
test_t str;
str.flags.a = 1;
printf("flags: %u\n", *(uint8_t*)&str.flags);
ab_t *f = &str.flags;
*(uint8_t*)f = 0;
printf("flags: %u\n", *(uint8_t*)&str.flags);
return 0;
}
g
gcc a.c && ./a.out
flags: 1
flags: 0
И да: а зачем объявлять имя структуре в typedef, если оно внутри самой структуры не используется? Это имеет смысл лишь для всяких очередей/списков и т.п., где внутри структуры есть указатели на подобные структуры.
// хотел это добавить в свое предыдущее сообщение, но никак не получилось из блока [code] вылезти. Сколько уже раз говорил, что эти "кнопочки" - уебище гребаное! Нужны нормальные bb-codes.