错误检查包装c++
Error checking wrapper c++
我想为一些函数写一个包装器来检查它们的返回值或一些参数的错误,所以我不需要每次调用时都写if
s。另外,我希望这个包装器只在调试模式下被调用。
我想要这样的东西:
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
我会这样做:
#ifdef DEBUG
#define ENUMNAME EValDebug
#else
#define ENUMNAME EStatus
#endif
enum ENUMNAME {E_OK, ...}
#ifdef DEBUG
class EStatus {
EStatus(ENUMNAME e) {
switch (e) {}
}
}
#endif
相关文章:
- 如何在c++17中制作一个模板包装器/装饰器
- std::vector的包装器,使数组的结构看起来像结构的数组
- 如何在c++迭代器类型中包装std::chrono
- 是否可以用"iostream"包装现有的TCP/OOpenSSL会话
- 用pybind11包装C++抽象类时出错
- 为左值和右值的包装器实现C++范围
- C结构,其指针将被包装在unique_ptr中
- 如何包装第三方DLL在R中使用
- 在类型和包装器之间reinterpret_cast是否安全<Type>?
- 将 N-arg 函数包装到另一个函数中
- 元组由 Swig 生成的 Python 包装器返回,用于C++向量
- 包装一个对象并假装它是一个 int
- 使用 Python Extension API 包装复杂C++类
- 外壳包装器句柄/执行交互式命令管道C++ UNIX
- 包装C++类时不完整的类型 GLFWwindow
- 将函数包装器转换为 std::function
- C++函数包装器来捕获某些信号
- 创建包装升压适配器的自定义范围类
- 如何包装(撰写)增强 hana 地图并访问括号运算符(运算符 [])?
- 使用运算符*重载包装矩阵乘法