【发布时间】:2009-09-11 16:51:00
【问题描述】:
不久前,我改变了处理 c 样式错误的方式。
我发现我的很多代码都是这样的:
int errorCode = 0;
errorCode = doSomething();
if (errorCode == 0)
{
errorCode = doSomethingElse();
}
...
if (errorCode == 0)
{
errorCode = doSomethingElseNew();
}
但最近我一直是这样写的:
int errorCode = 0;
do
{
if (doSomething() != 0) break;
if (doSomethingElse() != 0) break;
...
if (doSomethingElseNew() != 0) break;
} while(false);
我见过很多代码在出现错误后什么都不执行,但它总是以第一种风格编写的。有没有其他人使用这种风格,如果你没有,为什么?
编辑: 澄清一下,通常这个构造使用errno,否则我会在中断之前将值分配给int。此外,if (error == 0 ) 子句中的代码通常不仅仅是单个函数调用。不过,有很多值得思考的好点。
【问题讨论】:
-
顺便说一句,
while(false)给出了编译器警告。 -
哪个编译器?哪种语言?
-
可能是 GCC,因为
true和false在 C++ 中是保留字,但在 C 中不是。 -
如果您的编译器抱怨,请将 false 替换为 0。它是伪 C/C++。
-
MSVC 还抱怨条件表达式在 W4 上保持不变。
标签: c++ c coding-style