Why this code isn't compiling? If I understand right this should compile. Where I'm wrong?
#define THREADMODEL ASC 
#if THREADMODEL==NOASC
THIS BLOCK SHOULDN'T BE COMPILED
#endif
int main() {
}
                There are 4 Main Types of Preprocessor Directives:Macros. File Inclusion. Conditional Compilation. Other directives.
When the preprocessor interprets
#if THREADMODEL==NOASC
it will replace THREADMODEL with ASC:
#if ASC==NOASC
Unless you have #defined ASC and NOASC to have numeric values, the preprocessor will replace them with 0 values (it takes any undefined symbols and replaces them with 0):
#if 0==0
This then evaluates to 1 and so the preprocessor will evaluate the block.
To fix this, try giving different numeric values to ASC and NOASC, like this:
#define ASC    0
#define NOASC  (1 + (ASC))
Hope this helps!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With