std::experimental:: source_location
From cppreference.net
<
cpp
|
experimental
|
Défini dans l'en-tête
<experimental/source_location>
|
||
|
struct
source_location
;
|
(bibliothèque fundamentals TS v2) | |
La classe
source_location
représente certaines informations sur le code source, telles que les noms de fichiers, les numéros de ligne et les noms de fonctions. Auparavant, les fonctions qui souhaitaient obtenir ces informations sur le site d'appel (à des fins de journalisation, de test ou de débogage) devaient utiliser des macros afin que les macros prédéfinies comme
__LINE__
et
__FILE__
soient développées dans le contexte de l'appelant. La classe
source_location
offre une meilleure alternative.
Table des matières |
Fonctions membres
Création |
|
construit un nouveau
source_location
avec des valeurs définies par l'implémentation
(fonction membre publique) |
|
|
[static]
|
construit un nouveau
source_location
(fonction membre statique publique) |
Autres fonctions membres spéciales |
|
|
(destructeur)
(implicitement déclaré)
|
détruit un
source_location
(fonction membre publique) |
|
operator=
(implicitement déclaré)
|
opérateurs d'affectation de copie/déplacement implicitement déclarés
(fonction membre publique) |
Accès aux champs |
|
|
retourne le numéro de ligne représenté par cet objet
(fonction membre publique) |
|
|
retourne le numéro de colonne représenté par cet objet
(fonction membre publique) |
|
|
retourne le nom de fichier représenté par cet objet
(fonction membre publique) |
|
|
retourne le nom de la fonction représentée par cet objet, s'il y en a une
(fonction membre publique) |
|
Exemple
Exécuter ce code
#include <experimental/source_location> #include <iostream> #include <string_view> void log(const std::string_view message, const std::experimental::source_location location = std::experimental::source_location::current()) { std::cout << "info:" << location.file_name() << ':' << location.line() << ' ' << message << '\n'; } int main() { log("Hello world!"); }
Sortie possible :
info:main.cpp:15 Hello world!