Tema: Re: Reikia pagalbos C#
Autorius: saimhe
Data: 2010-08-31 12:33:45
> 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.

-- 
  saimhe