Библиотека C/C++ разработчика | cpp, boost, qt
20.6K subscribers
1.69K photos
45 videos
16 files
3.87K links
Все самое полезное для плюсовика и сишника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/d6cd2932

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
加入频道
🔄 std::source_location: автоматическое логирование

Забудьте FILE и LINE! std::source_location автоматически получает информацию о местоположении в коде.


#include <iostream>
#include <source_location>
#include <string_view>

void log_error(std::string_view message,
const std::source_location& loc = std::source_location::current()) {
std::cout << "ОШИБКА в " << loc.file_name()
<< ":" << loc.line()
<< " в функции " << loc.function_name()
<< " - " << message << std::endl;
}

void problematic_function() {
log_error("Что-то пошло не так!"); // Автоматически получит location
}

int main() {
log_error("Ошибка инициализации");
problematic_function();
return 0;
}


Важно: source_location вычисляется в точке вызова, не в точке определения функции.

Библиотека C/C++ разработчика #буст