Espaces de noms
Variantes
Affichages
Actions

Préprocesseur

De cppreference.com
< cpp
 
 
Langage C++
Sujets généraux
Préprocesseur
Commentaires
Mots-clés
Contrôle de flux
Instructions conditionnelles
Instructions d'itération
Instructions de saut
Fonctions
déclaration de fonction
expression lambda
fonction générique
spécificateur inline
spécification d'exception (obsolète)
spécificateur noexcept (C++11)
Exceptions
Espaces de noms
Types
spécificateur decltype (C++11)
Qualificatifs
qualificatifs const et volatile
qualificatifs de stockage
qualificatif constexpr (C++11)
qualificatif auto (C++11)
qualificatif alignas (C++11)
Initialisation
Littéraux
Expressions
opérateurs alternatifs
Utilitaires
Types
déclaration typedef
déclaration d'alias de type (C++11)
attributs (C++11)
Jette
Original:
Casts
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
conversions implicites
conversion const_cast
conversion static_cast
conversion dynamic_cast
conversion reinterpret_cast
conversions style C et style fonction
Allocation de mémoire
Classes
Qualificatifs spécifiques aux membres de classe
Fonctions membres spéciales
Modèles
classes génériques
fonctions génériques
spécialisation de modèles
paquets de paramètres (C++11)
Divers
Assembleur
 
 

Le préprocesseur est exécuté avant que la compilation ne commence. Le résultat du prétraitement est un seul fichier "source intermédaire" qui est ensuite passé au compilateur réel.

[modifier] Directives

Les directives de prétraitement contrôlent le comportement du préprocesseur. Chaque directive occupe une ligne et a le format suivant :

  • commence par le caractère #
  • l'instruction pré-traitement (un parmi define, undef, include, if, ifdef, ifndef, else, elif, endif, line, error, warning, pragma)
  • des paramètres (dépend de l'instruction)
  • saut de ligne

La directive nulle (# suivie d'un saut de ligne) est autorisée et n'a pas d'effet.

[modifier] Capacités

Le préprocesseur a les capacités de traduction du fichier source :

  • compilation conditionnelle de parties de fichier source (contrôlé par les directives #if, #ifdef, #ifndef, #else, #elif et #endif).
  • remplacement de macros de texte (contrôlé par les directives #define et #undef, et les opérateurs # et ##)
  • inclusion d'autres fichiers (contrôlé par la directive #include)
  • provoquer un avertissement (contrôlé par la directive #warning)
  • provoquer une erreur (contrôlé par la directive #error)

Les aspects suivants du préprocesseur peuvent être contrôlés :