# Avoiding Duplicate INCLUDES > [HTML Version](avoidingduplicateincl.htm) One common use for conditional compilation statement is to prevent a common include file—which may be referenced by multiple modules—from being processed more than once. You can also use ++INCLUDE'ONCE (see [One-Time ++INCLUDES](onetimeincludes.htm.md)) but that depends on consistent use through all the code which may reference an include file. Or you can use ++PRAGMA INCLUDE\_GLOBAL\_ONCE\_ONLY, or the compiler switch /IGOO, either of which can eliminate the duplicate inclusion problem globally. Addressing the issue via conditionals within the include file itself may require more code but has the advantage of eliminating any dependencies on the calling modules or the compilation environment. A common approach is to define a special symbol whose purpose is to indicate that the module has already been included, and then add a conditional testing that symbol to control whether the rest of the module will be compiled. For example: \! MYMODULE.BSI \++IFNDEF INC\_MYMODULE\_BSI\_ DEFINE INC\_MYMODULE\_BSI\_ 1 \++ENDIF In the above example, the first time the compiler sees the code, the symbol INC\_MYMODULE\_BSI\_ will not have been defined, so it proceeds to process the module (including defining the symbol). On subsequent passes through this module, the symbol will have been defined, so the conditional will cause the module contents to be skipped. For modules that define symbols or structures, you may avoid the need to define an artificial symbol just to track whether the module has been compiled, by referencing one of the DEFINE or [DEFSTRUCT](defstruct.htm.md) symbols in the file, i.e \++IFNDEF ST\_CUSTOMER ... DEFSTRUCT ST\_CUSTOMER MAP2 ... ... ENDSTRUCT ... \++ENDIF Similarly, if the module maps variables or defines any labels or functions/procedures, you can use ++IFNMAP or ++INFNLBL