Namensräume
Varianten
Aktionen

std::experimental::source_location

Von cppreference.com
 
 
 
 
 
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) [bearbeiten]
[static]
konstruiert ein neues source_location
(public static member function) [bearbeiten]
Andere spezielle Member-Funktionen
(Destruktor)
(implizit deklariert)
destruiert ein source_location
(public member function) [bearbeiten]
operator=
(implizit deklariert)
implizit deklarierte Kopier-/Verschiebezuweisungsoperatoren
(public member function) [bearbeiten]
Feldzugriff
gibt die von diesem Objekt repräsentierte Zeilennummer zurück
(public member function) [bearbeiten]
gibt die von diesem Objekt repräsentierte Spaltennummer zurück
(public member function) [bearbeiten]
gibt den von diesem Objekt repräsentierten Dateinamen zurück
(public member function) [bearbeiten]
gibt den Namen der von diesem Objekt repräsentierten Funktion zurück, falls vorhanden
(public member function) [bearbeiten]

[bearbeiten] 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!