Tema: Re: Reikia pagalbos C#
Autorius: Jornada Del Muerto
Data: 2010-08-31 14:24:01
C# kiek zinau unionu ne nepalaiko :)
"GP" <gp@srautas.lt> wrote in message news:i5iikn$t55$1@trimpas.omnitel.net...
> Nespejau atsakyti :)
> mintis ta pati, cia ne C# o elementaraus C strukturu principai;
>
> On 08/31/10 12:33, saimhe wrote:
>>> typedef struct { //32 bitu bool struktura
>>> BOOL bReady;
>>> BOOL bAuto;
>>> ...
>>> ...
>>> } TankStatus ;
>>>
>>> TankStatus Tank;
>>>
>>> long StatusDWORD;
>>>
>>> StatusDWORD=0xFD89;
>>
>> Štai tas pats klasikinėmis priemonėmis be jokių # :
>>
>> typedef union {
>> struct {
>> int bReady:1;
>> int bAuto:1;
>> .
>> :
>> } flags;
>> int raw;
>> } TankStatus;
>> .
>> :
>> Tank.raw=StatusDWORD;
>> if (Tank.flags.bReady)
>> .
>> :
>>
>> Užtat bus non-portable tarp "big endian" ir "little endian"
>> architektūrų ir
>> panašiaias atvejais. Jei kartais reikėtų tvarkyti, su #ifdef pakanka
>> aprašyti
>> kitą TankStatus.flags versiją, kur bitai pateikti reikiama tvarka.
>>
>
> --
> GP