Для доступа к struct
побайтно, я использую union
.
typedef struct {
char hi;
char lo;
} range;
union {
range by_name;
char as_bytes[sizeof(range)];
} U1;
char use_U1(void){
char c = U1.as_bytes[0];
return U1.by_name.hi;
}
Вопрос 1: Можно ли пропустить typedef
? Например:
union {
struct {
char hi;
char lo;
} by_name;
char as_bytes[2]; //want sizeof()
} U2;
Наивный char as_bytes[sizeof(by_name)]
не компилируется:
ошибка: здесь не объявлено 'by_name' (не в функции)
Вопрос 2: То же самое, но с анонимной структурой, чтобы избежать ввода .by_name
при использовании.
union {
struct {
char hi;
char lo;
};
char as_bytes[2]; //want sizeof()
} U3;
int use_U3(void){
char c = U3.as_bytes[0];
return U3.hi; // anonymous structure
}
Прочитать до сих пор: union , struct