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