Hallo,
I use RealView compiler for c I like to assert a statement by procompiler
Writing:
int i; const int Ass_FR = sizeof(i); #if Ass_FR != 5 #error "Error!!!" #endif
is working.
but:
int i; #if sizeof(i) != 5 #error "Error!!!" #endif
not.
He says: error: #59: function call is not allowed in a constant expression
Is this a bug?
PS: Found bad bug in compiler while(changedbyInt){}; will only test changedbyInt once in ASM. But changedbyInt is changed by Interrupt.<p>
No, you didn't find a bug. This is correct and expected behavior - by default, the compiler does not need to consider the possibility of the value of variables being changed outside the regular program flow (e.g. by interrupts, other processes, hardware, etc).
Using the keyword volatile when declaring the variable will instruct the compiler to assume that the value of the variable may change at any time.