h3 #if, #elif, #else, #endif if, elif, else, endif pre #if ... #elif ... #else ... #endif p #if starts a block of assembler instructions, which is only assembled if the given is true. The must be evaluatable in pass 1. Conditional assembly may be nested. Any assembler directive except pairing #else, #elif and #endif, and any assembler instruction or pseudo instruction is skipped if the is false. If the pairing #endif is not found until the end of file then a nesting error is assumed. Note, that #include is also skipped if is false. p As an exception the pseudo instructions 'if' and 'endif' are detected and handled just like '#if' and '#endif'. note: this may change. p After an #if directive where the was false, the #elif is checked and if it is true, the following block is assembled. if it is false, or if already a block was assembled within this #if ... #endif range, the following block is skipped. #elif is optional and may occur multiple times after #if. p After an #if directive, #else negates the . If it was false it becomes true and the following assembler instructions are assembled. If it was true it becomes false and the following assembler instructions are skipped. #else is optional and should only occur once before the #endif assembler directive. If #else occurs after some #elif directives, then the #else part is a final 'catch all'. p The #endif directive finishes conditional assembly as started with the #if directive.