小编Ros*_*n M的帖子

C++20 的 std::source_location 比预定义的宏 __FILE__、__LINE__ 和 __FUNCTION__ 有什么优势?

在我当前的项目中,我使用了:

Log(__LINE__, __FUNCTION__, message);
Run Code Online (Sandbox Code Playgroud)

但是新的 C++20 实用程序类std::source_location 带有函数line(), column(), file_name(), function_name(),它们做同样的事情。因此,新的 C++20 方式将是:

log(std::string message,const std::source_location& location = std::source_location::current())
{
    std::cout << "Debug:"
              << location.file_name() << ':'
              << location.line() << ' '
              << message << '\n';
}
Run Code Online (Sandbox Code Playgroud)

什么是新的,C ++ 20比旧标准双下划线宏方式的优点__LINE____FILE____func__,这已经被标准C ++很长一段时间?

我正在尝试确定优势是否如此之大,以至于证明修改我当前项目中的代码std::source_location以优先使用新对象而不是宏是合理的。

c++ c++20

9
推荐指数
2
解决办法
256
查看次数

标签 统计

c++ ×1

c++20 ×1