Documentation de Gambas - /lang/.if

/lang/.if
Le page anglaise est plus récente.

# #If

#If ExpressionPreprocesseur ... [ #Else If ExpressionPreprocesseur ... ] [ #Else ... ] #Endif

La directive de pré-processeur #If ... #Endif permet de compiler conditionnellement le code.

ExpressionPreprocesseur est une expression booléenne rudimentaire qui peut inclure ce qui suit :

- Une constante booléenne de pré-processeur (voir ci dessous).

- Une constante de pré-processeur comparée à une chaîne (voir ci dessous).

- Les mots clés Or ou And.

- Des parenthèses pour grouper des sous -expressions.

Les constantes de pré-processeur autorisées sont :

Constant | Valeur | Opérateurs de Comparaison autorisés
--- | --- | ---
`System` | Le système d’exploitation. | `=`, `<>`
`Architecture` ou `Arch` | L’architecture de CPU. | `=`, `<>`
`Version` ou `Gambas` | La version de compilateur. | `=`, `<>`, `<`, `<=`, `>`, `>=`
`Debug` | Si les informations de débogage sont activées. | Aucune
`True` | La valeur Vrai. | Aucune
`False` | La valeur Faux. | Aucune

### Exemples

    ' Une seule ligne 'Print' sera réellement compilée par le code suivant

    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 "Autre !?"
      #Endif

    End

En utilisant la compilation conditionnelle basée sur le système d’exploitation ou l’architecture CPU, vous créez un exécutable qui sera spécifique au système d’exploitation ou à l’architecture CPU employés au moment de la compilation.

Ce n’est pas ordinairement une bonne idée. Aussi efforcez vous, dans la mesure du possible, de détecter le système d’exploitation ou l’architecture CPU au moment de l’exécution, c.à.d. en testant la valeur de System.Family et System.Architecture dans votre code.