🧵 Сегодня покажу вам простой способ логгировать вызовы функций в C++ — пригодится для ...
🧵 Сегодня покажу вам простой способ логгировать вызовы функций в C++ — пригодится для отладки и анализа кода. Часто бывает нужно понять, какие функции вызываются, в каком порядке и с какими параметрами. Вручную вставлять std::cout — неудобно. Вместо этого используем RAII-макрос с выводом в консоль: #include <iostream> #include <string> struct FunctionLogger { std::string func_name; FunctionLogger(const std::string& name) : func_name(name) { std::cout << ">> Entering: " << func_name << '\n'; } ~FunctionLogger() { std::cout << "<< Exiting: " << func_name << '\n'; } }; #define LOG_FUNCTION() FunctionLogger logger(__FUNCTION__) Теперь в любой функции достаточно просто написать LOG_FUNCTION();, и вы получите автоматический лог при входе и выходе: void do_work() { LOG_FUNCTION(); // Работаем... } Это особенно удобно в больших проектах, когда нужно быстро локализовать ошибку или понять структуру вызовов. Можно доработать: лог в файл, потокобезопасность, включение по флагу компиляции и т.д.