Exactly.IMHO, from the ANSI C standpoint, the #if statement, which compares to 7 shoud work Ok. That is, the preprocessor should use intmax and thus evaluate macro as 7. However, when the macro is used later inside the C code, the compiler should use 16-bit arithmetic, so it should be replaced with 0.