Re: ANSI C: accesso ai dati di una union
|
- Subject: Re: ANSI C: accesso ai dati di una union
- From: brix99luftballons
- Data: Wed, 02 Jul 2008 11:36:50 +0200
- Newsgroups: it.hobby.elettronica.digitale
>>
>>
>> struttura:
>>
>> union mnglng {
>> /* bit access */
>> struct Bits {
>> unsigned char bit0:1;
>> unsigned char bit1:1;
>> unsigned char bit2:1;
>> unsigned char bit3:1;
>> unsigned char bit4:1;
>> unsigned char bit5:1;
>> unsigned char bit6:1;
>> unsigned char bit7:1;
>> } byte1, byte2, byte3, byte4;
>> /* byte access */
>> unsigned char B1;
>> unsigned char B2;
>> unsigned char B3;
>> unsigned char B4;
>> /* long access */
>> unsigned long long1;
>> } uAddr,
la struttura è concettualmente errata in quanto i campi B1 e B4 sono
esattamente gli
stessi, cosi' come la struttua a bit, viso che e' definita nella union.
struct bit8{
unsigned char bit0:1
........
unsigned char bit7:1
}BIT8_T;
struct bit32{
unsigned long bit0:1
........
unsigned long bit31:1
}BIT32_T;
union p{
BIT8_T bits[4];
BIT32_T bitl;
unsigned char b8[4];
unsigned long b32;
}x;
// accesso a bit:
x.bits[0].bit1=........;
x.bits[1].bit1=........;
x.bits[2].bit1=........;
x.bits[3].bit1=........;
// Accesso abit (32)
x.bitl.bit0=....;
............
x.bitl.bit31=....;
// accesso a byte:
x.b8[0]= ........;
x.b8[1]= ........;
bye