gpt4 book ai didi

c++ - 不用宏判断主叫线路

转载 作者:行者123 更新时间:2023-11-30 00:41:16 24 4
gpt4 key购买 nike

是否可以在不借助宏的情况下确定调用函数的行号?

考虑这段代码:

#include <iostream>

#define PrintLineWithMacro() \
std::cout << "Line: " << __LINE__ << std::endl; // Line 4

void PrintLine()
{
std::cout << "Line: " << __LINE__ << std::endl; // Line 8
}

int main(int argc, char **argv)
{
PrintLine(); // Line 13
PrintLineWithMacro(); // Line 14
return 0;
}

输出如下:

Line: 8
Line: 14

我理解为什么每个人都打印他们所做的事情。如果可以在不使用宏的情况下模仿宏功能,我会更感兴趣。

最佳答案

我会做以下事情:

#define PrintLine() PrintLine_(__LINE__)

void PrintLine_(int line) {
std::cout << "Line: " << line << std::endl;
}

我知道这并没有完全删除预处理器,但它确实将大部分逻辑移到了实际函数中。

关于c++ - 不用宏判断主叫线路,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4029265/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com