Introduction aux directives de préprocesseur en C

Le plus souvent, c'est une idée fausse que les préprocesseurs ou les macros font partie de la compilation du programme, mais c'est totalement faux. Les directives du préprocesseur sont le type de macros et une phase avant la compilation. On peut dire qu'il s'agit d'un ensemble d'instructions données au compilateur pour effectuer une compilation réelle. Ils sont également connus comme des abréviations de construction plus longues pour les macros, ce qui signifie que la valeur dans les macros est remplacée par le segment de codes. La macro est définie par un symbole spécial et a un symbole commençant par "#" Par conséquent, ces # define sont une sorte de préprocesseur spécial suivi du compilateur réel. Dans cette rubrique, nous allons découvrir les directives de préprocesseur en C.

Le préprocesseur a un type spécial de représentation pour son identification comme toute directive de préprocesseur s'initie par un symbole spécial de "#" suivi d'un identifiant puis du nom de la directive. Les espaces sont également autorisés avant et après le #. Par exemple, # include.

Il existe certains ajustements ou installations qu'un préprocesseur C peut fournir:

  • Fichiers d'en-tête: l' inclusion de fichiers d'en-tête est un moyen par lequel les déclarations peuvent être remplacées par la syntaxe et le corps du programme.
  • Expansion des macros: définir des macros revient à abréger un morceau de code qu'un préprocesseur C remplace les macros avec leur définition respective.
  • Compilation par conditions: Selon divers scénarios ou diverses conditions, l'inclusion de certaines parties du programme est possible par compilation conditionnelle.
  • Contrôle de ligne: Si vous utilisez un programme pour combiner ou réorganiser un ou plusieurs fichiers source dans un fichier intermédiaire pour la compilation, vous pouvez utiliser le contrôle de ligne pour informer le compilateur de l'origine de chaque ligne source.

Types de directives de préprocesseur

Tous les types de directives de préprocesseur sont les suivants:

  1. # définir
  2. # comprendre
  3. # ifdef
  4. # undef
  5. #ifndef
  6. # si
  7. #autre
  8. #elif
  9. #fin si
  10. #Erreur
  11. #pragma

1. #define (Macros)

Une macro est un extrait de code qui est remplacé par une valeur du code de la macro. Toute macro est principalement décrite et définie par sa directive #define.

Syntaxe:

#define token value

Il existe deux types de macros:

  • Fonction - comme les macros
  • Macros de type objet
Fonction - comme les macros

La fonction like-macro fonctionne presque comme un appel de fonction.

Par exemple:

#define MAX(a, b) ((a)>(b) ? (a): (b))

MAX voici le nom de la macro.

Exemple:

Production:

Macros de type objet

Les macros de type objet sont le type d'identifiant remplacé par la valeur. Il est principalement utilisé pour représenter des constantes numériques.

#define PI 3.1415

Ici, la valeur de PI sera remplacée par la macro.


Production:

2. #include

Il existe d'autres fonctionnalités pour la directive include preprocessor. Il a ses propres trois variantes qui remplacent le code par le code actuel des fichiers source.

Trois variantes sont les suivantes:

  • #comprendre
  • #include ”file”
  • Inclure autre chose

#comprendre

Recherche un fichier dans la liste définie du système ou des répertoires comme spécifié, puis recherche une liste standard de bibliothèques système.

#include ”file”

Ce type est utilisé pour vos propres fichiers d'en-tête personnalisés du programme. Une recherche est effectuée pour un fichier nommé fichier d'abord dans le répertoire courant suivi des fichiers d'en-tête système et des répertoires actuels du répertoire fichier actuel.

#inclure quoi que ce soit

Ce type de directive d'inclusion de préprocesseur est utilisé lorsqu'aucun des deux autres types restants de la directive et ses arguments ne correspondent pas et ne satisfont pas la structure de calcul.

3. #Ifdef

Vérifie si la macro est définie par # define ou non. Si oui, il exécutera le code, sinon il ne le fera pas.

Syntaxe:

#ifdef MACRO
(
Code body
)
#endif
#undef:

Annuler la définition d'une macro signifie qu'elle n'est pas définie et est précédée de la directive #undef.

Syntaxe:

#undef token

Production:

4. Ifndef

Ce processeur vérifie si #define est défini ou non par #define. Si oui, il exécute le code.

Syntaxe:

#Ifndef MACRO
//code
#endif
#If

Ce processeur fonctionne comme une boucle if uniquement, il évalue l'expression ou la condition. Si la condition id est vraie, elle exécutera le code sinon.

Syntaxe:

#if expression
//code
#endif
#else

La directive #else preprocessor est utilisée pour évaluer l'expression ou la condition si la condition de #if est fausse. Il peut être utilisé avec les directives #if, #elif, #ifdef et #ifndef.

Syntaxe:

#if expression
//if body
#else
//else body
#endif

Exemple:

Production:

5. #Error

Comme son nom l'indique, la directive Error preprocessor est utilisée pour indiquer une erreur, puis le compilateur donne une erreur fatale si la directive error est trouvée et ignore les étapes de compilation suivantes.

Production:

6. #pragma

Cela dépend du compilateur car différents systèmes d'exploitation et différentes machines fournissent tous les types de fonctionnalités du système d'exploitation qui sont utilisées par le compilateur pour offrir des informations supplémentaires au compilateur.

Syntaxe:

#pragma token

Exemple:

Production:

Chaque préprocesseur a sa propre signification, car une directive conditionnelle est utilisée pour vérifier si une partie du programme doit être prise en considération en fonction de scénarios ou non.

Supposons qu'un programme veuille être compilé dans un environnement spécifié avec la configuration spécifique du système d'exploitation, mais dès qu'il passe à cette phase de compilation, il génère une erreur ou il peut donner un code invalide donnant simplement à son programme la possibilité d'un grand non pour lier le programme et l'exécuter pendant l'exécution. Il peut également y avoir une autre possibilité où le même fichier source avec deux programmes différents peut effectuer une vérification de cohérence longue ou ses données immédiates, ou imprimer les valeurs des données avec le débogage.

De plus, ces scénarios à créer avec le calcul peuvent également être utilisés pour s'exécuter sur une machine en utilisant des directives de prétraitement.

Conclusion

La sortie du préprocesseur C ressemble beaucoup à l'entrée, sauf que toutes les directives de prétraitement ont été remplacées par des lignes vides ou des espaces. Différents fichiers et formats ont des syntaxes différentes indiquant que le début d'un nouveau fichier a été effectué ou indiquant un retour à un fichier ou un traitement doit être effectué avant la compilation.

Tous les scénarios sont utilisés pour faire connaître à d'autres la puissance du préprocesseur C et son évolution avec différentes versions du compilateur démarrées avec les normes GCC et ANSI.

Articles recommandés

Ceci est un guide des directives de préprocesseur en C. Ici, nous discutons des types de directives de préprocesseur avec la syntaxe et des exemples. Vous pouvez également consulter les articles suivants pour en savoir plus-

  1. Numéro inversé en C
  2. Tri en C
  3. Fonction de hachage en C
  4. Continuer la déclaration en C
  5. Tri en C #
  6. Comment fonctionne la fonction de hachage en php?