Macros standard du C++

© D. Mathieu     mathieu@romarin.univ-aix.fr
I.U.T.d'Aix en Provence - Département Informatique
Créé le 12/02/2001 - Dernière mise à jour : 12/02/2001

        La norme C++ indique que 6 macros, destinées au préprocesseur, sont disponibles :
 
__LINE__ représente le numéro de la ligne à laquelle apparaît la macro dans le fichier source
__FILE__ représente le nom du fichier source
__DATE__ représente la date de compilation du fichier source, sous la forme Mmm dd yyyy, où les noms des mois sont les mêmes que ceux générés par la fonction asctime(), et où le premier caractère de dd est un espace si le jour est inférieur à 10
__TIME__ représente l'heure de compilation du fichier source, sous la forme hh:mm:ss, dans le même format que celui généré par la fonction asctime()
__STDC__
__cplusplus
utilisées pour indiquer si le code compilé est en langage C standard ou en langage C++

    Toutes les macros ci-dessus, sauf __LINE__ et __FILE__, sont constantes pendant toute la durée de la compilation d'une unité de compilation (un fichier source et tous les fichiers qui y sont directement ou indirectement inclus).

    La séquence ci-dessous illustre l'utilisation des quatre premières macros dans le fichier source TestsMacrosStd :
 
#define __FILE_LINE__                                                         \
        cout << "\nDate de compilation  : " << __DATE__                       \
             << "\nHeure de compilation : " << __TIME__                       \
             << "\nNom du fichier       : " << __FILE__                       \
             << "\nNuméro de ligne      : " << setw (4) <<  __LINE__ << endl;
void Essai (void)
{
    cout << "Début"; __FILE_LINE__
    cout << "Suite"; __FILE_LINE__
    cout << "Fin";   __FILE_LINE__

} // Essai()   

qui provoque l'affichage suivant :
 
Début
Date de compilation  : Feb 12 2001
Heure de compilation : 20:55:40
Nom du fichier       : TestsMacrosStd.cxx
Numéro de ligne      :   28
Suite
Date de compilation  : Feb 12 2001
Heure de compilation : 20:55:40
Nom du fichier       : TestsMacrosStd.cxx
Numéro de ligne      :   29
Fin
Date de compilation  : Feb 12 2001
Heure de compilation : 20:55:40
Nom du fichier       : TestsMacrosStd.cxx
Numéro de ligne      :   30

© D. Mathieu     mathieu@romarin.univ-aix.fr
I.U.T.d'Aix en Provence - Département Informatique