Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Préprocesseur C et macros : Maîtriser #include, #define et la compilation conditionnelle

Préprocesseur C et macros

Explorez la puissance du préprocesseur C : apprenez à inclure des en-têtes, définir des constantes et des fonctions, et contrôler le flux de compilation avec des directives conditionnelles.

Préprocesseur C et macros : Maîtriser #include, #define et la compilation conditionnelle

Le préprocesseur C s'exécute avant le compilateur, transformant votre code source en étendant les macros, incluant les fichiers d'en-tête et évaluant les instructions conditionnelles. C'est un outil essentiel pour écrire du code flexible et réutilisable.

Toutes les directives du préprocesseur commencent par un symbole #. Par exemple :

#define PI 3.14

Inclusion de fichiers d'en-tête : #include

La directive #include insère le contenu d'un fichier d'en-tête directement dans votre fichier source. Utilisation courante :

#include <stdio.h>

Sans #include <stdio.h>, des fonctions comme printf() et scanf() seraient indéfinies. Vous pouvez aussi créer des en-têtes personnalisés :

#include "my_header.h"

Les en-têtes personnalisés sont utiles pour regrouper des déclarations de fonctions et des constantes liées.

Définition de constantes et d'expressions : #define

Un macro remplace un jeton ou une expression par une valeur avant la compilation. Exemple :

#define c 299792458 /* vitesse de la lumière */

L'utilisation de c n'importe où dans votre programme se développe en 299792458.

Exemple 1 : Définition de PI

#include <stdio.h>
#define PI 3.1415
int main() {
    float radius, area;
    printf("Entrez le rayon : ");
    scanf("%f", &radius);
    area = PI * radius * radius;
    printf("Aire=%.2f", area);
    return 0;
}

Macros de type fonction

Les macros peuvent accepter des arguments, fonctionnant de manière similaire aux fonctions inline :

#define circleArea(r) (3.1415 * (r) * (r))

Pour circleArea(5), le préprocesseur l'étend à (3.1415 * 5 * 5).

Exemple 2 : Utilisation d'une macro de type fonction

#include <stdio.h>
#define PI 3.1415
#define circleArea(r) (PI * (r) * (r))
int main() {
    float radius, area;
    printf("Entrez le rayon : ");
    scanf("%f", &radius);
    area = circleArea(radius);
    printf("Aire = %.2f", area);
    return 0;
}

Compilation conditionnelle

Les directives conditionnelles permettent d'inclure ou d'exclure des blocs de code à la compilation, similaires aux instructions if mais évaluées avant l'exécution.

Cas d'utilisation courants

Directives clés

#ifdef MACRO /* code quand MACRO est défini */ #endif
#if EXPRESSION /* code quand EXPRESSION est non-nul */ #else /* code quand EXPRESSION est nul */ #endif
#if EXPRESSION /* code */ #elif ANOTHER_EXPRESSION /* code alternatif */ #else /* code de secours */ #endif
#if defined BUFFER_SIZE && BUFFER_SIZE >= 2048 /* tampon assez grand */ #endif

Macros prédéfinies

MacroValeur
__DATE__Chaîne de la date de compilation courante
__FILE__Chaîne du nom de fichier courant
__LINE__Numéro de ligne où le macro apparaît
__STDC__Non-nul si le compilateur suit le standard ANSI C
__TIME__Chaîne de l'heure de compilation courante

Exemple 3 : Affichage de l'heure de compilation

#include <stdio.h>
int main() {
    printf("Heure actuelle : %s", __TIME__);
    return 0;
}

Exemple de sortie :

Heure actuelle : 19:54:39

Lectures recommandées

Langue C

  1. Résumé complet des résistances, inductances et condensateurs dans les circuits alternatifs
  2. Comprendre les mots-clés et identificateurs C# : règles, listes et bonnes pratiques
  3. Classes et objets C# : Fondations pour une POO robuste
  4. Maîtriser les classes et méthodes abstraites C# : Guide pratique
  5. Comprendre les classes et méthodes partielles C#
  6. Maîtriser les classes et méthodes sealed en C# : Quand les utiliser, exemples clairs et sécurité du code
  7. Maîtriser les directives de préprocesseur C# : Guide pratique
  8. Mots-clés et identificateurs en C : Guide pratique
  9. Constantes et littéraux en C : Types, utilisation et bonnes pratiques