gpt4 book ai didi

c++ - 在 C++ 的宏中包装方法

转载 作者:行者123 更新时间:2023-11-28 05:45:44 25 4
gpt4 key购买 nike

在我的框架中,我想知道调用方客户端代码的行号、文件路径和方法名称​​。因此,例如,框架有一个方法 B(),客户端使用该框架并在 X 行、文件路径 Y 处调用 B()。我想做一些错误报告,我想知道X 和 Y。

对此的明显解决方案是将 B() 包装在一个宏中:

#define B() B(__LINE__, __FILE__, ...) 这样客户端就不必指定 __LINE__ 和 __FILE__ 宏。

这是一个好的设计选择吗?如果不是,如何做才是最好的选择?

最佳答案

您的方法可能没问题,但如果您必须使用很多这样的方法,您可能需要考虑一种替代方法:

struct Location {
const char *file;
int line;
};

#define LOC (Location{__FILE__,__LINE__})

struct Framework {
void B(const Location &);
};

//客户端代码

Framework f;
f.B(LOC);

如果你有很多像B这样的方法,这样就减少了需要写的宏的数量,换来的是让客户端代码更繁琐一点。您必须权衡取舍。

关于c++ - 在 C++ 的宏中包装方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36253491/

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