
使用建议从上面的使用可以看出std::source_location 可以以函数的形式进行调用从而避免了使用宏所产生的一些弊端。但是由于使用的方式一般是以默认参数进行的因此不是适合变参的情况除非在外部传入 std::source_location::current()这一定程度上限制了使用。应用场景举例假设在我们封装了一个 IO 的操作类并封装了一层形如 size_t write(const char* msg, size_t len); 的函数用来发送数据。在开发过程中常常希望看到一些调用的情况。一般来说我们可以在外部调用时先自行打印 msg并获取返回值后再打印结果。这些操作非常简单更重要的是使用的非常频繁。当我们再项目中不断打印这些数据的时候若不及时删除则会出现洪水般的日志信息这些信息可能由于不同开发者的风格不通用难以跨文件删除或屏蔽使得给后期开发增加了不必要的麻烦。而将 write 函数改为 size_t write(const char* msg, size_t len, const std::source_location location std::source_location::current()); 则可以在 write 内部以统一的方式进行日志的打印和输出流的监控。提升了一定的开发效率。知名的开源 log 库最后这里介绍一些知名的开源日志库这些库大都比较成熟大家可以直接使用spdlogglogBoost Loglog4cxxPoco Logger 等等。