在我当前的项目中,我使用了:
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以优先使用新对象而不是宏是合理的。