Область действия директив препроцессора
Условные конструкции #if, #ifdef и #ifndef должны целиком находиться в одном файле.
Область действия директивы #define ограничена заголовочным файлом, в котором эта директива находится, плюс всеми файлами, подключающими этот файл директивами (#) include, #includeb или (#)includepp.
Директива #define, помещённая в файл исходного кода, видна только в этом файле.
Область действия директив #define в файлах исходного кода и заголовочных файлах
Как и определения или объявления переменных, идентификаторы препроцессора, созданные директивой #define, видны начиная со строки, где они определены.
В отличие от переменных, область действия идентификатора препроцессора всегда простирается до конца файла (или до конца всех файлов, подключающих этот файл).
Локальных областей и вложенных областей для определений препроцессора не существует. Пример кода:
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
Область действия идентификаторов препроцессора, определённых в диалоге Customize Project
Глобальные идентификаторы препроцессора (из диалога Customize Project) видны везде в проекте.