C语言下的错误处理的问题
下面是三种C语言的错误处理,你喜欢哪一种?还是都不喜欢?
/ 问题: 不充分,而且很容易出错,前面成功分配的资源,后面出错需要帮助释放 /
int foo(int bar)
{
int return_value = 0;
int doing_okay = 1;
doing_okay = do_something( bar );
if (doing_okay)
{
doing_okay = init_stuff();
}
if (doing_okay)
{
doing_okay = prepare_stuff();
}
if (doing_okay)
{
return_value = do_the_thing( bar );
}
return return_value;
}
/ 问题: 使用goto语句是很不好的 /
int foo(int bar)
{
if (!do_something( bar )) {
goto error;
}
if (!init_stuff( bar )) {
goto error;
}
if (!prepare_stuff( bar )) {
goto error;
}
return do_the_thing( bar );
error:
return 0;
}
/ 问题:太多的if嵌套了,无法阅读 /
int foo(int bar)
{
int return_value = 0;
if (do_something( bar )) {
if (init_stuff( bar )) {
if (prepare_stuff( bar )) {
return_value = do_the_thing( bar );
}
}
}
return return_value;
}
转载于酷壳CoolShell 无删改 仅以此纪念陈皓(左耳朵耗子)
虽然有官方 wiki ,但小白真的有点看不明白。。。icc2022 总是站点认证失败,导致根本进不去下一步。 wiki 里面 windows 相关的不是很详细,不搞了,等整了…
目前大一软工专业,学校课程开的是 c++(用的谭浩强的 c++程序设计第四版这本教材),自己在同时学 c ,打算只是先跟着 c primer plus 这本书学一遍。但有个同学…
我们知道Unix/Linux下的程序配置文件从来都是纯文本的,你可以自由地修改和查看,他们也没有什么什么XML之类的玩意(参看XML的这两篇文章:一,二),这个最重要的Unix…
合速度