#if : directive de compilation conditionnelle
#ifdef : directive de compilation conditionnelle
#ifndef : directive de compilation conditionnelle
#else : directive de compilation conditionnelle
#endif : directive de compilation conditionnelle
Syntaxe:
#if expression <retour/chariot> <groupe de lignes>
#ifdef symbole <retour/chariot> <groupe de lignes>
#ifndef symbole <retour/chariot> <groupe de lignes>
#else <retour/chariot> <groupe de lignes>
#endif
Description:
#if, #ifdef, #ifndef et #else marquent le début d'une suite de lignes dont la présence dans le texte à compiler est conditionnée par l'évaluation de 'expression' ou la définition de 'symbole'.
#else et #endif marquent la fin de cette suite.
'expression' est une expression arithmétique, qui ne fait intervenir que des constantes.
Si la valeur de 'expression' est non nulle, alors le groupe de lignes qui suit #if est généré.
Si la valeur de expression est nulle alors ce groupe de lignes est ignoré.
#idfef symbole le groupe de lignes est généré si 'symbole' correspond à une définition de macro-substitution.
#idnfef symbole le groupe de lignes est généré si 'symbole' ne correspond pas à une définition de macro-substitution.
Voir aussi:
Exemple:
/*
Un fichier source contenant des directives de compliation est
listé ci-dessous.
Puis le texte généré est présenté.
*/
#define NULL (void *)0
#define SYMB "directives de compilation conditionnelles"
#define TAILLE 100
main() {
#if TAILLE>10
double * td;
printf("Taille importante\n");
td = (double *) malloc( TAILLE * sizeof(double));
if( td==NULL ) {
printf("Taille trop grande\n"); exit(1);
}
#else
printf("Taille petite\n");
double td[TAILLE];
#endif
#ifdef SYMB
printf("*** %s \n", SYMB);
#endif
#undef SYMB
#ifdef SYMB
printf("*** %s \n", SYMB);
#else
printf("*** SYMB n'est plus défini \n");
#endif
}
/* Texte généré:
#line 1 "essai.c"
main() {
double * td;
printf("Taille importante\n");
td = (double *) malloc( 100 * sizeof(double));
if( td==(void *)0 ) {
printf("Taille trop grande\n"); exit(1);
}
#line 18 "essai.c"
printf("*** %s \n", "directives de compilation conditionnelles");
#line 28 "essai.c"
printf("*** SYMB n'est plus défini \n");
}
*/