This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

sizeof in #if Compiler statement not working

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?

Parents
  • 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.

Reply
  • 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.

Children
No data