我一直在做一些学校项目,我已经将这个功能用于错误输出:
void errorMsg(char* msg)
{
fprintf(stderr, msg);
exit(EXIT_FAILURE);
}
所以我可以这样做:
if (condition)
errorMsg("Error, Wrong parameters.");
将向用户显示消息,程序将以错误代码退出。
但是我收到了使用exit
函数的减号。
所以我只是想知道我该怎么做?除了在main函数中多次写这个之外还有其他方法吗?
if (condition)
{
fprintf(stderr, "Error, Wrong parameters.");
return(EXIT_FAILURE);
}
谢谢你的时间。
答案 0 :(得分:2)
这实际上取决于您的编程方式,或者在这种情况下,您的老师希望您如何编程 在这种情况下,最好的答案是去找你的老师并要求解释为什么这是错误的。
当我在C中编程时,我的所有函数总是返回int
(或typedef
int
)然后我可以从函数返回错误。然后我的main
函数返回时返回错误。像这个模板的东西:
int func(void)
{
int return_value = 0;
if (/* Some condition */) {
return_value = 1
}
/* Some code */
return return_value;
}
int main(void)
{
int return_value = 0;
return_value = func();
return return_value
}
使用此模板,如果有错误,将从main
函数返回1,如果成功,将返回0。同样,您可以在main
函数中添加if条件,以检查func
的返回值。这使您可以选择处理代码中的错误。
答案 1 :(得分:1)
一个重要的原因:
如果你有一些代码已经打开了文件,但还没有完成写入,并且这段代码将一些工作委托给将结束程序的函数,会发生什么?
是的,你会得到一个破损的文件
相同的推理对于分配的内存,任何类型的打开句柄等都是有效的。
不是每次都能想到函数是否可以结束程序,而不是首先编写这样的函数。无论一切是否正常都无关紧要,但每次将函数后的“控制”返回给调用者。 exit
唯一可以正常的地方是主要的,因为它基本上会像返回那样做同样的事情。在主要方面,没有理由不首先写return
。
答案 2 :(得分:0)
我的观点是退出功能更难测试。在测试具有退出调用的函数时,我遇到了很多困难。