[elektro] c kerdes

Balázs Bámer bamerbalazs at gmail.com
Sat Dec 6 21:42:00 CET 2008


> Hogy tudnam ezt megvalósítani C-ül?
>
> typedef struct{
>  union{
>  struct{
>   uchar bit: 1;
>  }a[8];
>  uchar A;
>  }alarm[2];
> }sys_stat;
>
>  for(loop0=ID_IN0;loop0<ID_IN3+1;loop0++){
>   if(cfg.in[loop0].changed_state) sys_stat.alarm[0].a.bit[0]=1;
>  }
>
> ami gond, a bit nevű bitmezőt szeretném tömbösíteni, címezni...

Tippre sehogy. A ciklus helyesen így szólna:
for(loop0=ID_IN0;loop0<ID_IN3+1;loop0++){
  if(cfg.in[loop0].changed_state) sys_stat.alarm[0].a[0].bit=1;
 }
viszont a
struct{
   uchar bit: 1;
}a[8];
nem egy bájtban vagy szóban csinál 8 bitet (ha ez volt a szándék),
hanem lefoglal nyolc bájtot vagy szavat (vsz implementációfüggő), és
mindben lesz egy bit nevű bit.
Biteket logikai műveletekkel és << operátorral lehet címezni.

szia: Balázs


More information about the Elektro mailing list