dav*_*vka 3 c++ error-handling macros
我们在代码中有一个频繁重复的行,用于检查函数的返回状态,如果是故障,则立即返回状态.我想为这个定义一个宏:
#define RETURN_IF_FAILED(x) { int stat = (x); if (FAILED(stat)) return stat; }
Run Code Online (Sandbox Code Playgroud)
局部变量是因为参数x可以是函数调用.
我知道有一些奇怪的使用宏的工件,我不是很熟练,我想问你是否看到这个宏有任何问题.谢谢.
(并且,请不要建议使用例外 - 我自己讨厌这种风格,但这就是它在这里完成的方式)
我想稍微修改一下; do{} while(0)像这样用它封闭它:
#define RETURN_IF_FAILED(x) do { int stat = (x); if (FAILED(stat)) return stat; } while(0)
Run Code Online (Sandbox Code Playgroud)
现在您可以使用此MACRO,如下所示:
if (SomeCondition)
RETURN_IF_FAILED(x); //<--- note the "usual" semicolon!
else
{
//some code
}
Run Code Online (Sandbox Code Playgroud)
使用您的版本,此代码根本不可用.该;宏命令后会在你的版本引起的问题!
| 归档时间: |
|
| 查看次数: |
1330 次 |
| 最近记录: |