В Гугле и в Поиске ЛОРа ничего подходящего не нашлось.
Суть вопроса. Возьмём для отвлечённого примера netinet/icmp6.h и заявленную там
struct icmp6_hdr
{
uint8_t icmp6_type; /* type field */
uint8_t icmp6_code; /* code field */
uint16_t icmp6_cksum; /* checksum field */
union
{
uint32_t icmp6_un_data32[1]; /* type-specific field */
uint16_t icmp6_un_data16[2]; /* type-specific field */
uint8_t icmp6_un_data8[4]; /* type-specific field */
} icmp6_dataun;
};
Вопрос: можно ли (и как, если да)
1. Объявить переменную типа «упакованная struct icmp6_hdr»
2. Объявить указатель на «упакованную struct icmp6_hdr»
3. Привести указатель (void*, например) к типу «указатель на упакованную struct icmp6_hdr».
?
Вариант «заяви и пользуй свою структуру foo, которая есть копипаста от субжевой с припиской __attribute__((packed)) в конце» не предлагать. Потому что, сейчас так в общем-то и сделано:))). Просто не нравится очень такая... корявость чтоль. Хотя если нет других вариантов, то придётся оставить так.