PureBasic

Директивы компилятора

Краткое описание функций:
CompilerIf CompilerSelect CompilerError/CompilatorWarning
EnableExplicit
DisableExplicit
EnableASM
DisableASM
Зарезервированные константы

Синтаксис
CompilerIf <constant expression>
  ...
[CompilerElseIf]
  ...
[CompilerElse]
  ...
CompilerEndIf

Описание


Если результат истинный, код внутри директивы CompilerIf будет компилироваться, иначе он будет полностью проигнорирован. Эта директива позволяет создавать кроссплатформенные программы, настраивая части исходного кода в соответствии с каждой операционной системой. Чтобы скомбинировать в <constant expression> несколько условий, можно использовать ключевые слова And и Or.

Пример

CompilerIf #PB_Compiler_OS = #PB_OS_Linux And #PB_Compiler_Processor = #PB_Processor_x86
    ; какой-то специфичный для Linux и x86 код.
CompilerEndIf




Синтаксис
CompilerSelect <numeric constant>
  CompilerCase <numeric constant>
    ...
  [CompilerDefault]
    ...
CompilerEndSelect

Описание


Работает как обычный Select: EndSelect, кроме того что разрешено только одно численное значение на каждый выбор. Она позволяет выбирать какой код компилировать, в зависимости от выполнения условия. Эта директива позволяет создавать кроссплатформенные программы, настраивая части исходного кода в соответствии с каждой операционной системой.

Пример

CompilerSelect #PB_Compiler_OS
    CompilerCase #PB_OS_MacOS
        ; специфичный код для Mac OS X
    CompilerCase #PB_OS_Linux
        ; специфичный код для Linux
CompilerEndSelect




Синтаксис
CompilerError <string constant>
CompilerWarning <string constant>

Описание


Генерирует ошибку или предупреждение, как если бы произошла синтаксическая ошибка, и отображает соответствующее сообщение. Это может быть полезно при создании специализированных процедур, или чтобы уведомить, что код для конкретной ОС отсутствует.
Примечание. Директива CompilerWarning только отображает предупреждения, а процесс компиляции продолжается, директива CompilerError останавливает процесс компиляции.

Пример: Генерация ошибки

CompilerIf #PB_Compiler_OS = #PB_OS_Linux
    CompilerError "Linux не поддерживается, извините."
CompilerElse
    CompilerError "ОС поддерживается, теперь вы можете закомментировать меня."
CompilerEndIf

Пример: Генерация предупреждения

CompilerIf #PB_Compiler_OS = #PB_OS_Linux
    CompilerWarning "Linux не поддерживается, извините."
CompilerElse
    CompilerWarning "ОС поддерживается, теперь вы можете закомментировать меня."
CompilerEndIf




Синтаксис
EnableExplicit
DisableExplicit

Описание


Включает (EnableExplicit) или Выключает (DisableExplicit) режим явного объявления. Когда он включен, все переменные, которые не были объявлены явно с помощью c Define, Global, Protected или Static не принимаются и компилятор сообщит об ошибке. Может помочь устранить орфографические ошибки при использовании переменных.

Пример

EnableExplicit

Define a

a = 20 ; Ok, эта переменная была объявлена с помощью 'Define'
b = 10 ; Здесь выдаст ошибку




Синтаксис
EnableASM
DisableASM

Описание


Включает или выключает встроенный ассемблер. Когда он включен, все ключевые слова ассемблера доступны прямо в коде. Для получения дополнительной информации смотрите раздел справки Встроенный x86 ASM.

Пример

; x86 assembly example
;
Test = 10

EnableASM
MOV dword [v_Test],20
DisableASM

Debug Test ; будет 20




Зарезервированные константы

У компилятора PureBasic есть несколько зарезервированных констант, которые могут быть полезны для программиста:
  #PB_Compiler_OS : Позволяет узнать, на какой платформе работает компилятор. Может быть одно из следующих значений :
    #PB_OS_Windows : Компилятор работает на Windows
    #PB_OS_Linux   : Компилятор работает на Linux
    #PB_OS_MacOS   : Компилятор работает на Mac OS X

  #PB_Compiler_Processor :  определяет тип процессора. Может быть одно из следующих значений :
    #PB_Processor_x86     : процессор архитектуры x86 (также называемой IA-32 или x86-32)
    #PB_Processor_x64     : процессор архитектуры x86-64 (также называемой x64, AMD64 или Intel64)
  
  #PB_Compiler_ExecutableFormat : Определяет формат исполняемых файлов. Может быть одно из следующих значений :
    #PB_Compiler_Executable : обычный исполняемый файл (EXE)
    #PB_Compiler_Console    : консольный исполняемый файл (имеет эффект только на Windows, на других действует как обычный исполняемый файл)
    #PB_Compiler_DLL        : совместно используемый DLL (dynlib на MacOS X и общем объекте на Linux)

  #PB_Compiler_Date     : Текущая дата, во время компиляции, в формате даты PureBasic.
  #PB_Compiler_File     : Полный путь и имя компилируемого файла, полезно для отладки.
  #PB_Compiler_FilePath : Полный путь компилируемого файла, полезно для  отладки.
  #PB_Compiler_Filename : имя скомпилированного файла (без пути) файла, полезно для отладки.
  #PB_Compiler_Line     : Номер строки компилируемого файла, полезно для отладки.
  #PB_Compiler_Procedure: название текущей процедуры, если строка находится внутри процедуры.
  #PB_Compiler_Module   : текущее имя модуля, если строка внутри  модуля.
  #PB_Compiler_Version  : версия компилятора, целое '420' для версии 4.20.
  #PB_Compiler_Home     : Полный путь директории PureBasic, может быть полезен чтобы найти включаемые файлы
  #PB_Compiler_Debugger : равна 1, если включен отладчик, иначе равна 0.
                          Когда исполняемый файл уже создан, отладчик всегда отключается (эта константа будет равна 0)
  #PB_Compiler_Thread   : Равна 1 если выполняемый файл компилируется в потоко-безопасном режиме, иначе равна 0.
  #PB_Compiler_Unicode  : Равна 1 если выполняемый файл компилируется в режиме юникода, иначе равно 0.
  #PB_Compiler_LineNumbering : равно 1, если исполняемый файл скомпилирован с поддержкой OnError line numbering, иначе равно 0. 
  #PB_Compiler_InlineAssembly: равно 1, если исполняемый файл скомпилирован с поддержкой Встроенного x86 ASM, иначе равно 0. 
  #PB_Compiler_EnableExplicit: равно 1, если исполняемый файл скомпилирован с Включенным явным определением переменных, иначе равно 0.
  #PB_Compiler_IsMainFile    : равно 1, если откомпилированный файл является основным файлов, иначе равно 0.
  #PB_Compiler_IsIncludeFile : равно 1, если откомпилированный файл является included в другой файл, иначе равно 0.