gpt4 book ai didi

c++ - 检查包装器C++时出错

转载 作者:行者123 更新时间:2023-12-03 08:51:13 24 4
gpt4 key购买 nike

我想为一些函数编写一个包装器,以检查它们的返回值或某些参数是否有错误,因此我不需要每次调用某些东西时都写if。我也希望仅在 Debug模式下才调用此包装器。

我想要这样的东西:

CheckError(myfunction(myParam1, myParam2, ...);

其中 myFunction返回一些错误代码,例如 myParam2通过引用返回此代码。

我已经设法使用预处理器宏为第一种情况编写解决方案:
#define CHECK_RESULT(function) \
{\
if(function != VNT_SUCCESS)\
{ \
std::cout << "ERROR!\n"; \
}\
}

但是我有点不喜欢为此使用预处理器宏。我已经阅读了有关使用完美转发的内容,也看到了一些解决我问题的方法,但是它们都需要创建模板化包装器,这将需要我分隔函数名称和参数,而不仅仅是按原样包装函数调用(请参见上文) 。

有什么解决办法吗?

最佳答案

您可以执行常规功能而不是MACRO:

void CheckError(const EStatus& res) // Reference to allow your second check
{
#ifdef DEBUG // Choose appropriate flag according to your build option
if (res != VNT_SUCCESS)
{
std::cerr << "ERROR!\n";
}
#endif
}

并使用它:
CheckError(myfunction(myParam1, myParam2));
CheckError((myfunction2(myParam1, myParam2), myParam2)); // To check myParam2

关于c++ - 检查包装器C++时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40307968/

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