[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