Hi there All, I have a problem which seemed to be defying explanation, but I have come up with a theory. Could I possibly have some feedback on whether the following is likely, plausible, possible, untrue or downright rubbish? If one reads the contents of a CAN or ADC chip register at a particular address, then the label volatile is placed upon that address to prevent the compiler optimising out repeat readings of the address. If one reads the contents of the address into a variable, then the compiler would automatically treat the contents of this variable with similar care. Is it possible that there has been an oversight with statements where the contents of a variable depend on the contents of a volatile by way of an if statement, ie...
normal_var=volatile_var;
normal_var=voltile_var; if (normal_var=0x00) { another_normal_var+=1; }
hello, the question was not to proof by example that's work! It's clear that one should use Volatile declaration. About "when" and "how" one can read in many helps. The question was how it worked in this concrete case without this declaration and without "may be" or it was a miracle or luck and so on. I would hear it like , it works so because... or it has been read from the same memory location each time, because... I would't need common explanation which are clear for everybody, I would need it a little more deeper in the problem. Sorry, if somehow straight. With best wishes to all and thank you very much. S.