Namespaces
Variants

Preprocessor

From cppreference.net
< c

Le préprocesseur est exécuté lors de la phase de traduction 4 , avant la compilation. Le résultat du préprocessing est un fichier unique qui est ensuite transmis au compilateur proprement dit.

Table des matières

Directives

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

  • # caractère
  • instruction de préprocesseur (l'une des suivantes : define , undef , include , if , ifdef , ifndef , else , elif , elifdef , elifndef (depuis C23) , endif , line , embed (depuis C23) , error , warning (depuis C23) , pragma ) [1]
  • arguments (dépend de l'instruction)
  • saut de ligne.

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

Capacités

Le préprocesseur possède les capacités de traduction des fichiers sources :

  • compilation conditionnelle de parties du fichier source (contrôlée par les directives #if , #ifdef , #ifndef , #else , #elif , #elifdef , #elifndef (depuis C23) et #endif ).
  • remplacement de macros textuelles avec concaténation ou guillemetage d'identifiants (contrôlé par les directives #define et #undef , et les opérateurs # et ## )
  • inclusion d'autres fichiers (contrôlée par la directive #include et vérifiée avec __has_include (depuis C23) )
  • provoquer une erreur ou un avertissement (depuis C23) (contrôlé par la directive #error ou #warning respectivement (depuis C23) )

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

Notes de bas de page

  1. Ce sont les directives définies par la norme. La norme ne définit pas le comportement pour d'autres directives : elles peuvent être ignorées, avoir une signification utile ou rendre le programme mal formé. Même si elles sont autrement ignorées, elles sont supprimées du code source lorsque le préprocesseur a terminé. Une extension non standard courante est la directive #warning qui émet un message défini par l'utilisateur pendant la compilation. (jusqu'à C23)

Exemple

Références

  • Norme C23 (ISO/IEC 9899:2024) :
  • 6.10 Directives de préprocesseur (p: TBD)
  • Norme C17 (ISO/CEI 9899:2018) :
  • 6.10 Directives de préprocesseur (p: 117-129)
  • Norme C11 (ISO/IEC 9899:2011):
  • 6.10 Directives de préprocesseur (p: 160-178)
  • Norme C99 (ISO/IEC 9899:1999) :
  • 6.10 Directives de préprocesseur (p: 145-162)
  • Norme C89/C90 (ISO/IEC 9899:1990) :
  • 3.8 Directives de préprocesseur

Voir aussi

Documentation C pour Symboles de Macro Prédéfinis
Documentation C pour Index des Symboles de Macro
Documentation C++ pour Préprocesseur