używam następujący związek uprościć bajt skubać i bitowe operacje:C++ anonimowych kodowanym
union Byte
{
struct {
unsigned int bit_0: 1;
unsigned int bit_1: 1;
unsigned int bit_2: 1;
unsigned int bit_3: 1;
unsigned int bit_4: 1;
unsigned int bit_5: 1;
unsigned int bit_6: 1;
unsigned int bit_7: 1;
};
struct {
unsigned int nibble_0: 4;
unsigned int nibble_1: 4;
};
unsigned char byte;
};
Działa ładne, ale również generuje to ostrzeżenie:
ostrzeżenie: ISO C++ zabrania anonimowy structs [-pedantic]
Dobrze wiedzieć. Ale ... jak uzyskać to ostrzeżenie z mojego wyjścia g ++? Czy istnieje możliwość napisania czegoś podobnego do tego związku bez tego problemu?
Dlaczego nie po prostu nazwać struct? –
Nie będziesz w stanie zrobić tego, co chcesz zrobić w domenach prawidłowego C++. To może działać, ale będzie to niezdefiniowane zachowanie. –
Potrafię to nazwać - na przykład ukłucie struktury i uczynienie z niej pola związku. Ale wtedy będę musiał uzyskać do niego dostęp Byte.nibbles.nibble_0. Nie będzie tak przyjemnie korzystać;). – Dejwi