A symbol works like a boolean. Either its defined or its not. The #if, #elif and #importif directives takes an expression that contains symbols and operators and returns either true of false. Here are some examples:
#if !DEBUG && !COMPLICATED // some stuff #endif #if DEBUG || (X && Y && Z) || X==DEBUG // Note that you can also use parenthesis# #importif DEBUG&&STANDALONE "UpstartWithDebug.asm"
Here is a list of operators:
Table 8.2. Preprocessor operators
Operator | Description |
---|---|
! | Negates the expression |
&& | Logical and. |
|| | Logical or. |
== | Returns true if the operands are equal. |
!= | Returns true if the operands are not equal. |
() | Parenthesis can be used to controll order of evaluation |