#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
|
Exec
|
Si l'option -x a été passée au compilateur (voir la discussion ci-dessous).
|
Aucune
|
True
|
La valeur Vrai.
|
Aucune
|
False
|
La valeur Faux.
|
Aucune
|
En utilisant la ligne de commande
gbc3 -x
pour la compilation de votre projet, vous pouvez définir la constante pré-processeur
Exec
. L'IDE passe
-x
au compilateur si et seulement s'il crée une archive exécutable (fichier .gambas). En présumant que le projet est toujours compilé via l'IDE, vous pouvez utiliser
Exec
pour faire une compilation conditionnelle du code en archives exécutables. Voir
ce fil pour une discussion des limitations de cette méthode.
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 utilisés au moment de la compilation.
D'habitude, ce n’est pas 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.