Conditional Compilation

  • To check the value of a symbol against a static value, equality or inequality:

    • ::IF:: <symbol> == <value>

    • ::IF:: <symbol> != <value>

  • To check for the existence of a symbol, regardless of value:

    • ::IFDEF:: <symbol>

  • To check for the non-existence of a symbol

    • ::IFNDEF:: <symbol>

  • To choose the other boolean path after the above:

    • ::ELSE::

  • To terminate an IF, IFDEF, IFNDEF or ELSE block:

    • ::ENDIF::

Each IF, IFDEF or IFNDEF block must be terminated by an ENDIF tag.

Each IF, IFDEF or IFNDEF *may* include an ELSE block, prior to the ENDIF tag.

IF, IFDEF and IFNDEF blocks *may* nest.

The template preprocessor uses a non-standard engine so as to not interfere with the C personality templates' use of the gnu cpp preprocessor directives.