【发布时间】:2020-11-02 07:01:35
【问题描述】:
考虑一下我写的这个小程序:
#include <iostream>
template<bool Debug = false>
constexpr int add(const int& a, const int& b) {
if (Debug)
std::cout << __FUNCTION__ << " called on line " << __LINE__ << '\n';
return (a + b);
}
int main() {
std::cout << add(3, 7) << '\n';
std::cout << add<true>(5, 9) << '\n';
return 0;
}
它工作得很好,它给出了正确的输出:
10
add called on line 6
14
但是,我希望打印的行号是程序调用站点的行,在这个程序中应该是第 12 行。
那么我如何使用__LINE__ 或其他方法来给我调用函数的行号?
期望的输出是:
10
add called on line 12
14
如果可能的话,我希望它由函数本身生成。
-编辑-
作为对读者的说明,我对任何和所有选项持开放态度,但我当前的构建环境仅限于 C++17,并且我正在使用 Visual Studio。
【问题讨论】:
标签: c++ visual-studio-2017 macros preprocessor line-numbers