Hello, I'm using KEIL V5.10 with STM32F103. My project has some enum type variables, such as typedef enum { a0 = 0, a1, a2, an } aType;
In source file, I used conditional compile statements:
#if (an > 0) xxxx #endif
But the body inside was not compiled whatever an is higher than zero, I don't know why.
An array can be correctly complied if I used an as array's length, such as
static uint16_t u16Buf[an];
There is no warning or error after compilation.
Anyone knows why the conditional compilation does not work?
Thanks!
Preprocessor stuff occurs BEFORE the compiler processes the source, it's not a KEIL or GCC thing.
Use a regular 'if' construct and the let the optimizer deal with the 'if (1 == 2)' paths that are never taken.