std::experimental:: source_location
From cppreference.net
<
cpp
|
experimental
|
Определено в заголовочном файле
<experimental/source_location>
|
||
|
struct
source_location
;
|
(библиотека fundamentals TS v2) | |
Класс
source_location
представляет определённую информацию об исходном коде, такую как имена файлов, номера строк и имена функций. Ранее функции, желающие получить эту информацию о месте вызова (для целей логирования, тестирования или отладки), должны были использовать макросы, чтобы предопределённые макросы вроде
__LINE__
и
__FILE__
раскрывались в контексте вызывающей стороны. Класс
source_location
предоставляет лучшую альтернативу.
Содержание |
Функции-члены
Создание |
|
создаёт новый
source_location
с определёнными реализацией значениями
(public member function) |
|
|
[static]
|
создаёт новый
source_location
(public static member function) |
Другие специальные функции-члены |
|
|
(destructor)
(implicitly declared)
|
уничтожает
source_location
(public member function) |
|
operator=
(implicitly declared)
|
неявно объявленные операторы копирования/перемещения присваивания
(public member function) |
Доступ к полям |
|
|
возвращает номер строки, представленный этим объектом
(public member function) |
|
|
возвращает номер колонки, представленный этим объектом
(public member function) |
|
|
возвращает имя файла, представленное этим объектом
(public member function) |
|
|
возвращает имя функции, представленное этим объектом, если оно есть
(public member function) |
|
Пример
Запустить этот код
#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!"); }
Возможный вывод:
info:main.cpp:15 Hello world!