Цитата
Приведите весь код, а то не понятно это внутри структуры, юниона или просто чистое объявление.
Это заголовок IP
Код
typedef struct IP_Head_v4_tag {
struct {
unsigned char IHL : 4; // IHL - 5
unsigned char Version : 4; // Version - 4
};
struct {
unsigned char Prec : 3; // Precedence - 3
unsigned char D : 1; // Delay Normal - 0
unsigned char T : 1; // Throughput Normal - 0
unsigned char R : 1; // Relibility Normal - 0
unsigned char Res1 : 2; // Reserved - 00
};
unsigned short TotalLen; // Total Length
unsigned short Identif; // Идентификатор - 0
struct {
unsigned short FragOffset: 13; // Fragment Offset - 0
unsigned char MF : 1; // Fragment - 0 = Last Fragment
unsigned char DF : 1; // Fragment - 1 = Don't Fragment
unsigned char Res2 : 1; // Reserved - 0
};
struct {
unsigned char TTL : 8; // Time to Live < 1
unsigned char Prot : 8; // Protocol
};
unsigned short Checksum; // Header Checksum
IPADDRESS IP_SRC_Adr; // Source Address
IPADDRESS IP_DST_Adr; // Destination Address
} IP_Head_v4;
Со всеми перечисленными компиляторами (WINAVR, MinGW, Visual Studio) анонимные битовые поля структур работают правильно.
Цитата
Для анонимных структур существует #pragma anon_unions.
Спасибо, проверю, а вдруг поможет.
Цитата
Что-то я не понимаю, как эту структуру безымянную использовать.
Например так
Код
IP_Head_v4 IP_H;
IP_H.IHL = 5;