#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 .