Je souhaite effectuer un printf()
à afficher lorsque le code en cours d'exécution a été compilé pour la dernière fois. C/C++ fournit-il une macro qui résout un horodatage pendant la compilation?
Vous pouvez utiliser __DATE__
et __TIME__
.
16.8 Noms de macro prédéfinis [cpp.predefined]
1 Les noms de macro suivants seront définis par la mise en oeuvre:__LINE__
Le numéro de ligne de la ligne source actuelle (constante décimale).__FILE__
Nom présumé du fichier source (littéral de chaîne de caractères).__DATE__
La date de traduction du fichier source (littéral de chaîne de caractères de la forme "Mmm jj aaaa", où les noms des mois sont identiques à ceux générés par la fonction asctime et le premier caractère de dd est un espace si la valeur est inférieure à 10). Si la date de traduction n'est pas disponible, une date valide définie par l'implémentation est fournie.__TIME__
Heure de traduction du fichier source (littéral de chaîne de caractères de la forme "hh: mm: ss" comme dans le temps généré par la fonction asctime). Si l'heure de traduction n'est pas disponible, une heure de validité définie par l'implémentation est fournie.__STDC__
Si__STDC__
est prédéfini et, dans l'affirmative, quelle est sa valeur, sont définis par l'implémentation.__cplusplus
Le nom__cplusplus
est défini à la valeur 199711L lors de la compilation d'une unité de traduction C++ .
Vous voulez __TIME__
et éventuellement __DATE__
.
Utilisez les macros __DATE__
et __TIME__
Si vous utilisez le préprocesseur gcc, vous trouverez ce que vous recherchez dans les macros __TIME__
et __DATE__
.
Citation de GNU C Processor doc
__DATE__
Cette macro se développe en une constante de chaîne qui décrit la date à laquelle le préprocesseur est exécuté. La constante chaîne contient onze caractères et ressemble à "12 février 1996". Si le jour du mois est inférieur à 10, il est complété par un espace à gauche.
__TIME__
Cette macro se développe en une constante de chaîne qui décrit l'heure à laquelle le préprocesseur est en cours d'exécution. La constante chaîne contient huit caractères et ressemble à "23:59:01".
Utilisez un script ou créez une application pour générer un fichier source C++ contenant la date et l'heure de la génération. Ajoutez ce fichier à la configuration de la construction. Les autres parties du programme peuvent référencer les données de ce fichier.
Cette technique est également utile pour incorporer un numéro de version dans le programme. Le processus de construction peut contrôler le numéro de version.
Je l'utilise pour envoyer un message à DbgView:
OutputDebugStringA(("ATTACHED VERSION: "+ string(__DATE__) + " " + string(__TIME__)).c_str());
Il semble que les compilateurs sont censés fournir une macro __TIMESTAMP__
, qui devrait convenir à vos besoins.