Namespaces
Variants

std::experimental:: source_location

From cppreference.net
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

#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!