lang • .if

#If

#If PreprocessorExpression ... [ #Else If PreprocessorExpression ... ] [ #Else ... ] #Endif

A diretiva Preprocessor #If ... #ENDIF permite compilar condicionalmente códigos.

PreprocessorExpression é uma expressão boolean rudimentar que pode incluir o seguinte:

  • A constante boolean Preprocessor (veja abaixo).

  • Uma constante Preprocessor em comparação com uma string (ver abaixo).

  • A palavra-chave Or ou And.

  • Parêntese para agrupar sub-expressões.

As constantes de pré-processamento permitidos são:

Constantes

Valor Os operadores de comparação permitidos
System O sistema operacional. =, <>
Architecture ou Arch A arquitetura da CPU. =, <>
Version ou Gambas A versão do compilador. =, <>, <, <=, >, >=
Debug Se as informações de depuração estão habilitada. None
True O valor True. None
False O valor False. None

Exemplos

' Apenas uma linha 'Print' será, na verdade, compilada pelo seguinte código

Public Sub Main()

  #If System = "Linux"
    #If Architecture = "x86_64"
      Print "Linux 64 bits"
    #Else
      Print "Linux 32 bits"
    #Endif
  #Else If System = "FreeBSD"
    Print "FreeBSD ?"
  #Else
    Print "Other !?"
  #Endif

End

Ao usar a compilação condicional baseado no sistema operacional ou arquitetura da CPU, você cria um executável que será específico para o sistema operacional ou arquitetura da CPU usado em tempo de compilação.

Isso geralmente não é uma boa ideia, por isso tente o máximo possível detectar o sistema operacional ou arquitetura de CPU em tempo de execução, ou seja, por meio de testes do valor de System.Family e System.Architecture em seu código .