0Pricing
C Academy · Leçon

Constantes #define

Utilisez des constantes du préprocesseur.

Constantes #define est une leçon C Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C Academy comprend 4 leçons au total.

Fonctionnement de #define

#define est une directive du préprocesseur qui crée une macro : un nom que le préprocesseur remplace par du texte avant la compilation.

Il est couramment utilisé pour donner un nom lisible à une valeur fixe, comme la taille d'un tampon ou une limite.

#define MAX_LEN 256

Substitution de texte

Une macro est un simple remplacement de texte. Partout où MAX_LEN apparaît, le préprocesseur écrit 256 à sa place.

Il n'y a ni type ni mémoire ; cela se produit avant même que le compilateur ne voie le code.

#include <stdio.h>
#define MAX_LEN 256
int main(void) {
    printf("%d\n", MAX_LEN);
    return 0;
}

Pas de point-virgule

Une erreur courante consiste à terminer un #define par un point-virgule.

Le point-virgule fait alors partie du texte de remplacement et peut provoquer des erreurs déroutantes. Omettez-le.

#define PI 3.14159     /* correct */
#define BAD 10;        /* wrong: semicolon is substituted too */

Définir une constante flottante

Les macros fonctionnent avec tout littéral, y compris les valeurs à virgule flottante.

Ici, PI est substitué dans la formule de l'aire à chaque utilisation.

#include <stdio.h>
#define PI 3.14159
int main(void) {
    double r = 2.0;
    printf("%.2f\n", PI * r * r);
    return 0;
}

Macros pour les tailles de tableaux

Les macros sont souvent utilisées pour dimensionner les tableaux, car la valeur doit être connue au moment de la compilation.

Utiliser un nom permet de centraliser la taille et de la modifier facilement.

#include <stdio.h>
#define SIZE 5
int main(void) {
    int data[SIZE] = {1, 2, 3, 4, 5};
    printf("%d\n", data[SIZE - 1]);
    return 0;
}

Mettez toujours les expressions entre parenthèses

Si une macro se développe en une expression, placez-la entre parenthèses.

Sans parenthèses, la priorité des opérateurs peut modifier le sens lorsque la macro est utilisée dans une expression plus grande.

#define WIDTH (4 + 2)   /* good */
#define BADW 4 + 2       /* risky: 10 * BADW becomes 10*4+2 */

Pourquoi les parenthèses sont importantes

Ce programme montre la différence. Avec des parenthèses, WIDTH est multiplié dans son ensemble ; sans elles, seule une partie est multipliée.

La version sûre affiche 60 ; le développement non sécurisé effectuerait un calcul différent.

#include <stdio.h>
#define WIDTH (4 + 2)
int main(void) {
    printf("%d\n", 10 * WIDTH);
    return 0;
}

Macros de chaînes

Les macros peuvent également représenter des littéraux de chaîne, ce qui est pratique pour les messages fixes ou les noms de version.

Le texte est substitué exactement, guillemets compris.

#include <stdio.h>
#define APP_NAME "CoddyKit"
int main(void) {
    printf("Welcome to %s\n", APP_NAME);
    return 0;
}

#define ou const

Une macro n'a ni type ni adresse ; une variable const possède les deux et respecte la portée.

Préférez const lorsque vous souhaitez la sûreté des types et une meilleure visibilité lors du débogage. Utilisez #define pour les constantes connues à la compilation, comme les tailles de tableaux.

#define M_SIZE 10
const int c_size = 10;

Supprimer des définitions et protections

Vous pouvez supprimer une macro avec #undef. Les macros servent également aux protections de fichiers d'en-tête qui empêchent les inclusions multiples.

Voici le modèle classique de protection utilisé au début des fichiers d'en-tête.

#ifndef CONFIG_H
#define CONFIG_H
/* header contents here */
#endif

Convention de nommage

Par convention, les noms de macros s'écrivent en MAJUSCULES_AVEC_SOULIGNES.

Cela les identifie visuellement comme des constantes du préprocesseur et vous aide à éviter les conflits avec les noms de variables ordinaires.

#include <stdio.h>
#define BUFFER_SIZE 1024
int main(void) {
    printf("%d\n", BUFFER_SIZE);
    return 0;
}

Vérification rapide

Vérifiez votre compréhension des macros.

Récapitulatif

#define crée des macros que le préprocesseur substitue sous forme de texte, sans type, sans point-virgule et sans mémoire.

Mettez les expressions entre parenthèses et préférez const pour les valeurs bénéficiant de la sûreté des types, en réservant les macros aux besoins de compilation comme les tailles de tableaux et les protections de fichiers d'en-tête.

Questions Fréquemment Posées

La leçon « Constantes #define » est-elle gratuite ?

Oui — le texte complet de « Constantes #define » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C Academy, passe à CoddyKit PRO. Le cours C Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Constantes #define » ?

Utilisez des constantes du préprocesseur. Tu pratiques C Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C Academy ?

Aucune expérience préalable n'est requise. C Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Constantes #define » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C Academy ?

Oui. Chaque leçon C Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Définir des énumérations
  2. Valeurs et plages d’énumération
  3. Variables const
  4. Constantes #define
← Retour à C Academy