gpt4 book ai didi

在 C 程序中正确使用 EXIT_FAILURE?

转载 作者:太空狗 更新时间:2023-10-29 17:15:57 24 4
gpt4 key购买 nike

我正在编写一个需要使用多个 ANSI C 函数来处理数据的网络应用程序。另一种语言,可能是 Java,将调用主 C 函数来触发该过程。我想从 Java 脚本的主要 C 函数返回一个值来评估成功与否。我预计 C 对 exit() 的使用就是出于这个原因。

在编写 C 语言程序时,有几次我遇到了可以评估以检查程序是否正确运行的情况。例如,如果我有一个只能等于“方程式 1”、“方程式 2”或“方程式 3”的变量,然后我使用一个

if(var==equation1) { 
/*statements*/
}
else if(var==equation2) {
/*statements*/
}
else if(var==equation3) {
/*statements*/
}

语句来检查它是三种可能性中的哪一种,我可以在末尾添加一个 else { },我预计其内容永远不会在正常运行的程序中执行,以捕获意外问题。我想在最后一个 else { } 语句中放置一个 exit(EXIT_FAILURE)。如果我理解正确的话,这将导致程序终止,并向 Java 调用程序返回一个非零值以供其检测。对吗?

出于同样的原因,我能否将此 exit(EXIT_FAILURE) 遍及各种函数,而不仅仅是 main()

关于设置机制的一些问题 -- main 函数是否简单设置为:int main(void); 为简单起见假设没有输入参数?也就是说,需要 int 返回宏 EXIT_FAILURE 调用的整数值......是这样吗?

如果 main() 函数调用了另一个函数,并且该函数包含一个 exit(EXIT_FAILURE) 语句,那么该另一个函数是否需要在其函数中专门包含一个 return原型(prototype),例如int function_one(void); 返回 EXIT_FAILURE 状态需要 int,或者 EXIT_FAILURE 宏在这方面是自给自足的,因此,如果 function_one 想要返回一个字符,那么它的原型(prototype)可以是 char function_one(void); 并且不用担心在其原型(prototype)中为 EXIT_FAILURE 返回任何东西?

最佳答案

main 的返回类型int 实际上是调用进程看到的返回值。一般的想法是您的 main 像任何其他函数一样执行此操作,即 return EXIT_FAILURE。只要有可能,您就应该使用这种直接的方法。

exit 函数可用于简化所有这些操作,并从 main 以外的任何其他函数返回调用者。但是使用exit的函数的返回值与它可能通过exit初步退出无关。因此,您不必更改函数的任何原型(prototype)。

您的其他假设似乎是正确的,并且您使用 exit 终止无效调用对我来说似乎有效。

关于在 C 程序中正确使用 EXIT_FAILURE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8281543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com