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