What is the value of NO ? If it is undefined (e.g. YES ), they will evaluate to 0 .
This means that your expression is essential
#if 0 == 0
which, of course, is true, and thus causes the merger of the first call.
UPDATE: it is not defined how BOOL defined, but casting to what typedef can be: type ed is not a good idea when working with a preprocessor. Remember that #if is evaluated by the preprocessor, not the compiler. Read this for more information on expressions in the preprocessor. Special:
The preprocessor knows nothing about types in the language.
source share