The Scope of Preprocessor Directives

Conditional constructs #if, #ifdef, and #ifndef must be contained entirely within a single file.

The scope of the #define directive is limited to a header file in which this directive resides plus all files that include this file with the (#) include, #includeb, or (#)includepp directives.

A #define directive placed in a source file is only visible in this source file.

Scope of #define directives placed in your source and header files

Like variable defines or declarations, preprocessor identifiers created with the #define directive are visible from the line where they are defined onwards.

Unlike variables, the scope of a preprocessor identifiers always extends to the bottom of a file (or to the bottom of all files that include this file).

There are no local scopes and sub-scopes for preprocessor definitions. Here is a code example:

** Tibbo Basic **

sub on_sys_init
   dim f as byte
   for f=0 to 10
      dim s as string      'this variable's scope is limited to the for-next loop it resides in
      #define NUM_ITEMS 10 'this macro is visible from here to the end of the file
   next f
end sub

Scope of preprocessor identifiers defined in the Customize Project dialog

Global preprocessor identifiers (from the Customize Project dialog) are visible everywhere in your project.