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

标签 c++ error-handling wrapper

我想为一些函数编写一个包装器,以检查它们的返回值或某些参数是否有错误,因此我不需要每次调用某些东西时都写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/

相关文章:

c++ - 通过 ref 传递数组

c++ - 如何删除 "NSBundle may not respond to ' -pathForResource :ofType' "warning

c++ - 隐式类型转换不起作用

php - 使用程序方式引发自定义PHP错误的更好的实践

asp.net-core - ASP.NET Core : global handling for showing exception message in current page

C++ 模板访问不同元素大小的数组?

python - AttributeError : 'IntegrityError' object has no attribute 'message' SQLAlchemy

jQuery 用 div 包装多个 id

c++ - 使用 C++ shared_ptr 用删除器包装 C 结构

python - 如何使用 CFFI 将包含其 header 的 C 库包装到 python 程序中?