gpt4 book ai didi

c++ - 如何在 C++ 中调用函数时打印每个函数名称?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:10:34 24 4
gpt4 key购买 nike

我正在探索一个大型代码库,我不是 gdb 的粉丝。我想加一个 LOG(INFO) << __PRETTY_FUNCTION__在代码库中每个函数的第一行。但这非常乏味。有谁知道进行所有函数调用以打印带有函数名称的 LOG 消息的技巧?

最佳答案

我做了类似的事情:

#include <iostream>

class LogScope
{
public:
LogScope(const char* scope, const char* file, int line = 0)
: m_scope(scope), m_file(file), m_line(line)
{
std::clog << "[Begin] " << m_scope << ", " << m_file << ", " << m_line << std::endl;
}

~LogScope() {
std::clog << "[End] " << m_scope << ", " << m_file << ", " << m_line << std::endl;
}

private:
const char* m_scope;
const char* m_file;
int m_line;
};

#define NAME_AT_LINE_2(Name, Line) Name##_##Line
#define NAME_AT_LINE_1(Name, Line) NAME_AT_LINE_2(Name, Line)
#define NAME_AT_LINE(Name) NAME_AT_LINE_1(Name, __LINE__)

#define LOG_SCOPE \
::LogScope NAME_AT_LINE(log_scope)(__FUNCTION__, __FILE__, __LINE__)

void f() {
LOG_SCOPE;
}

int main() {
LOG_SCOPE;
f();
}

关于c++ - 如何在 C++ 中调用函数时打印每个函数名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21209018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com