c++ - 在没有 #define 的情况下捕获 __LINE__ 和 __FILE__

标签 c++ c++11

尝试确定以下 C 风格代码的“现代”实现:

#define logError(...) log(__FILE__, __LINE__, __VA_ARGS__)

是否可以使用不依赖于 #define 的可变参数模板或类似的东西来捕获它?

所需用例:

logError( "Oh no! An error occurred!" );

__FILE____LINE__ 是在后台捕获的,但反射(reflect)了调用 logError 的文件名和行号。

最佳答案

宏确实是您唯一的选择,至少在 std::source_location 之前是这样。使其成为标准并满足您的愿望。

关于c++ - 在没有 #define 的情况下捕获 __LINE__ 和 __FILE__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36851551/

相关文章:

c++ - 命名右值引用的类型是什么?

C++:将结果用作成员函数的参数时关于转换构造函数的混淆

C++随机引擎不是真正随机的

c++ - 使用 std::thread 从派生类调用重写方法

c++ - 多维数组是否会在 C 和/或 C++ 中引起任何问题?

c++ - 将 Boost.Proto 语法与类型匹配

c++ - 如何概括 std::chrono::duration(s)?

c++ - ostream_iterator for vector<vector<double>>

c++ - 使用以 lambda 作为成员的成员初始值设定项列表时出现 VC++ 2013 错误

c++ - 内联模板特化