C - warning: undefined behavior the order of volatile acceses isundefined in....
Palasik Sandor
palasik at mail.datanet.hu
Thu Dec 15 22:30:16 CET 2005
Fuzesi Arnold wrote:
> volatile uchar TxPacket[MAX_LENGTH + 7];
> volatile uint spicmd;
>
> spicmd = Txreg_write_cmd | TxPacket[0];
>
>
> warning: undefined behavior the order of volatile acceses is
> undefined in this statament here
>
>
> Mit akar ezzel mondani?
Azt, hogy nézd meg az assembly kódot, hogy tetszik-e a volatile változók
piszkálásának sorrendje :-)
Persze nehezen tudok nagyon különböző kódokat elképzelni ebből az
utasításból. Azt azért jó lenne tudni, hogy a Txreg_write_cmd az egyáltalán
változó-e, és ha igen, akkor volatile-e? Ha igen, akkor elvileg az első
volatile olvasása befolyásolhatja a második értékét. Mondok egy hülye
példát: soros porton össze akarom adni a data és a státusz regiszterek
értékét. A végeredmény sorrendfüggő.
Palasik Sándor
More information about the Elektro
mailing list