std::experimental:: source_location
From cppreference.net
<
cpp
|
experimental
|
Definiert in Header
<experimental/source_location>
|
||
|
struct
source_location
;
|
(Library Fundamentals TS v2) | |
Die
source_location
-Klasse repräsentiert bestimmte Informationen über den Quellcode, wie Dateinamen, Zeilennummern und Funktionsnamen. Bisher mussten Funktionen, die diese Informationen über den Aufrufort erhalten möchten (für Protokollierung, Tests oder Debugging-Zwecke), Makros verwenden, damit vordefinierte Makros wie
__LINE__
und
__FILE__
im Kontext des Aufrufers expandiert werden. Die
source_location
-Klasse bietet eine bessere Alternative.
Inhaltsverzeichnis |
Memberfunktionen
Erstellung |
|
konstruiert einen neuen
source_location
mit implementierungsdefinierten Werten
(öffentliche Elementfunktion) |
|
|
[static]
|
konstruiert einen neuen
source_location
(öffentliche statische Elementfunktion) |
Weitere spezielle Elementfunktionen |
|
|
(Destruktor)
(implizit deklariert)
|
zerstört einen
source_location
(öffentliche Elementfunktion) |
|
operator=
(implizit deklariert)
|
implizit deklarierte Kopier-/Verschiebezuweisungsoperatoren
(öffentliche Elementfunktion) |
Feldzugriff |
|
|
gibt die von diesem Objekt repräsentierte Zeilennummer zurück
(öffentliche Elementfunktion) |
|
|
gibt die von diesem Objekt repräsentierte Spaltennummer zurück
(öffentliche Elementfunktion) |
|
|
gibt den von diesem Objekt repräsentierten Dateinamen zurück
(öffentliche Elementfunktion) |
|
|
gibt den Namen der von diesem Objekt repräsentierten Funktion zurück, falls vorhanden
(öffentliche Elementfunktion) |
|
Beispiel
Diesen Code ausführen
#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!