Sous-sections

7.4 Compilation conditionnelle

7.4.1 Test d'existence d'une pseudo-constante

Ce sont les directives #ifdef et #ifndef qui permettent de tester l'existence d'une pseudo-constante.

Syntaxe

 
    #ifdef identificateur
       partie-alors
    [#else
       partie-sinon]
    #endif

    #ifndef identificateur
       partie-alors
    [#else
       partie-sinon]
    #endif

La définition d'une pseudo-constante ainsi que sa valorisation peuvent se faire à l'appel de la commande cc au moyen de l'option -D.

Syntaxe

 
  cc -Dpseudo-constante[=valeur] ...
On peut appliquer ce principe à la pseudo-constante DEBUG de l'exemple précédent au lieu de la définir dans le fichier source.c :

 
            cc -DDEBUG source.c

7.4.2 Évaluation de pseudo-expressions

Il est possible de construire des expressions interprétables par le préprocesseur à l'aide :

Syntaxe

 
     #if pseudo-expression
        partie-alors
     [#else
        partie-sinon]
     #endif

Remarque

Si l'on désire mettre en commentaire une portion de programme, la solution consistant à l'encadrer par les caractères /* et */ ne marche pas si elle contient elle-même des commentaires.

Une solution simple est de placer en tête de la région à commenter la directive #if 0, et à la fin la directive #endif /* 0 */.

Exemple source.c

 
#define TBLOC 256
#if !defined  TAILLE
#  define TAILLE TBLOC
#endif
#if TAILLE%TBLOC == 0
#  define TAILLEMAX TAILLE
#else
#  define TAILLEMAX ((TAILLE/TBLOC+1)*TBLOC)
#endif
static char buffer[TAILLEMAX];
main()
{
   printf("Taille du vecteur : %d caracteres\n",
          sizeof buffer);
}

  1. cc -DTAILLE=255 source.c
  2. cc -DTAILLE=257 source.c
  3. cc source.c


Pr. Marc BUFFAT
buffat@ufrmeca.univ-lyon1.fr
2004-12-01