std::experimental::source_location
Von cppreference.com
< cpp | experimental
| Definiert in Header <experimental/source_location> |
||
| struct source_location; |
(Library Fundamentals TS v2) | |
Die Klasse source_location repräsentiert bestimmte Informationen über den Quellcode, wie z. B. Dateinamen, Zeilennummern und Funktionsnamen. Zuvor mussten Funktionen, die diese Informationen über die Aufrufstelle erhalten wollten (für Protokollierungs-, Test- oder Debugging-Zwecke), Makros verwenden, damit vordefinierte Makros wie __LINE__ und __FILE__ im Kontext des Aufrufers erweitert wurden. Die Klasse source_location bietet eine bessere Alternative.
Inhalt |
[bearbeiten] Member-Funktionen
Erzeugung | |
erzeugt eine neue source_location mit implementierungsdefinierten Werten(public member function) | |
| [static] |
konstruiert ein neues source_location(public static member function) |
Andere spezielle Member-Funktionen | |
| (Destruktor) (implizit deklariert) |
destruiert ein source_location(public member function) |
| operator= (implizit deklariert) |
implizit deklarierte Kopier-/Verschiebezuweisungsoperatoren (public member function) |
Feldzugriff | |
| gibt die von diesem Objekt repräsentierte Zeilennummer zurück (public member function) | |
| gibt die von diesem Objekt repräsentierte Spaltennummer zurück (public member function) | |
| gibt den von diesem Objekt repräsentierten Dateinamen zurück (public member function) | |
| gibt den Namen der von diesem Objekt repräsentierten Funktion zurück, falls vorhanden (public member function) | |
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#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!"); }
Mögliche Ausgabe
info:main.cpp:15 Hello world!