Io uso il seguente unione per semplificare byte, sgranocchiare e bit operazioni:C++ struct anonimi
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;
};
Funziona bello, ma genera anche questo avvertimento:
avvertimento: ISO C++ vieta anonima structs [-pedantic]
Ok, bello sapere. Ma ... come ottenere questo avviso dal mio output g ++? C'è la possibilità di scrivere qualcosa come questa unione senza questo problema?
Perché non semplicemente il nome del tuo struct? –
Non sarai in grado di fare ciò che stai cercando di fare nei regni del C++ valido. Potrebbe funzionare, ma sarà un comportamento indefinito. –
Posso nominarlo, ad esempio struct nibbles e renderlo un campo di unione. Ma poi dovrò accedervi Byte.nibbles.nibble_0. Non sarà così bello da usare;). – Dejwi