C编程新手。我正在编写一个需要使用几个ansi C函数来处理数据的Web应用程序。另一种语言,可能是Java,将调用主C函数来触发该过程。我想从Java脚本的主C函数返回一个值来评估成功与否。我希望C出于这个原因使用exit()。
当我开始编程C时,有几次我遇到了可以评估以检查程序是否正常运行的情况。例如,如果我有一个只能等于“等式1”,“等式2”或“等式3”的变量,那么我使用if {} else if {} else if {}语句来检查三者中的哪一个可能性,我可以添加一个else {}到最后,我希望它的内容永远不会在正常运行的程序中执行,以捕获意外的问题。我想在最后的其他{}语句中放置一个exit(EXIT_FAILURE)
。如果我理解正确,这将导致程序终止,并向Java调用程序返回一个非零值以供其检测。这是对的吗?
出于同样的原因,我可以在各种功能中使用此出口(EXIT_FAILURE),而不仅仅是main()吗?
关于设置它的机制的一些问题 - 主要功能是否设置为:int main(void);
假设没有输入参数以简化?也就是说,int需要返回宏调用的整数值EXIT_FAILURE ...是吗?
如果main()函数调用了另一个函数,并且该函数包含exit(EXIT_FAILURE)
语句,那么其他函数是否需要在其原型中特别包含一个返回值,例如: int function_one(void);
其中int需要返回EXIT_FAILURE状态,或者EXIT_FAILURE宏在这方面是否自给自足,所以如果function_one想要返回一个字符,那么它的原型可以是{{1}并且不用担心在原型中为EXIT_FAILURE返回任何内容?
答案 0 :(得分:8)
int
的返回类型main
实际上是调用进程看到的返回值。一般的想法是,您的main
执行此操作与任何其他功能return EXIT_FAILURE
一样。只要有可能,你应该使用这种直接方法。
函数exit
可用于快捷所有这些并从main
以外的任何其他函数返回调用者。但是使用exit
的函数的返回值与它可能通过exit
初步退出的事实无关。因此,您无需更改任何功能原型。
您的其他假设似乎是正确的,您使用exit
来终止无效调用对我来说是有效的。
答案 1 :(得分:6)
答案 2 :(得分:4)
是的,您可以从任何地方拨打exit
以终止该计划。如果您认为您的程序不应该继续使用,请随意使用它。
此外,您可能希望设计自己的错误代码,而不是使用通用EXIT_FAILURE
,这样您就可以向调用者提供更多信息,而不仅仅是“出错了”。并将其与exit
一起使用(请记住,您可以使用任何8位值调用它,而不仅仅是EXIT_FAILURE
或EXIT_SUCCESS
)。例如,0可能是成功,1可能是输入读取失败,2可能是输入格式错误,依此类推。