c++ - 如何像 assert 那样获取实际的行号?

标签 c++

我想编写记录器类,我想知道是否可行。 考虑:

do_something_funny(&my_cat);
LOG::info("just did something funny with his cat");
cout<< LOG::getAllTxt();

输出:

[0.001s][main.cpp:5] - just did something funny with his cat

查看 main.cpp:5。它是从该文件的第 5 行记录的

我应该在范围内使用函数,还是创建单例对象?

最佳答案

__LINE__包含当前行号。

请注意,为了有效地使用它,您必须从宏中访问它。如果您只是调用一个日志函数,并且它访问 __LINE__,它将在日志函数中报告行号。所以你可以定义:

#define LOGINFO(message) (LOG::info((message), __LINE__))

关于c++ - 如何像 assert 那样获取实际的行号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20795181/

相关文章:

C++ 嵌套类可访问性

c++ - 打印堆栈的元素

c++ - 返回值优化 (RVO) 不是错误吗?

c++ - opencv 使用给定坐标进行特征匹配

c++ - 使用结构成员创建映射会抛出 bad_alloc

c++ - g++ 标志只检查语法?

c++ - 如何在正则表达式中匹配 "["和 "]"?

c++ - rdbuf的生命周期和使用

c++ - 将 std::list 转换为 C 友好类型

c++ - Eigen 能否在其线性代数 Ax=b 中使用超过 Double 的精度