On Tue, Apr 19, 2005 at 03:28:07PM +0200, Etienne Lorrain wrote:
>   Hi,
> 
>   Just a minor thing, but I hit this problem times to times, I know
>  the CPP preprocessor has no warning like "end of line ignored"...
>  GCC-3.3.5 and 3.4.3.
This is just order of operations.

> [EMAIL PROTECTED]:~/projet$ cat > tmp.c
> #define OPTION1 0x0001
> #define OPTION2 0x0002
> #define OPTION3 0x0004
> #define OPTION4 0x0008
> 
> #define CONFIGURATION (OPTION1 | OPTION3)

> // There is the problem: the "== 0" is ignored
> #if CONFIGURATION & OPTION2 == 0
> #warning OPTION2 unset
> #else
> #warning OPTION2 set
> #endif

That's #if (1 | 4) & (2 == 0).  2 != 0, so 5&0 == 0.

-- 
Daniel Jacobowitz
CodeSourcery, LLC

Reply via email to