![](/img/trans.png)
[英]Why are EXIT_SUCCESS and EXIT_FAILURE "implementation defined"?
[英]Is it OK to use EXIT_SUCCESS / EXIT_FAILURE for error reporting inside a program?
假设我有一个程序,其中有一个类似于errno
(名为project_error
)的全局变量,我在其中存储了过去发生的确切错误,但我还希望函数返回一个简单的 OK/NOK 状态以简化错误处理,这样我只在返回 NOK 时检查project_error
。
如果我使用在<stdlib.h>
定义的标准宏是否可以,或者最好定义我自己的,因为那些通常意味着你实际上退出了程序?
它可能是基于意见的,但我想知道是否有任何事实上的标准或惯例。
以这种方式返回的错误可能是“输入越界”类型的无害错误,它只是拒绝用户输入并再次询问,或者是致命错误,需要调用者进行清理、发出警告并退出。 这是通过读取全局变量而不是返回值来决定的。
正如您所说的 EXIT_SUCCESS (0) 和 EXIT_FAILURE (1) 只是 stdlib 定义的宏,它们在 POSIX 系统上被设置为这些整数,以便调用父进程对程序的退出状态有一个模糊的了解( glibc 参考)。 我会说,因为这是供您自己内部使用的,如果您使用这些确切的值,只会让读者感到困惑。 更好地定义您自己的名称,以使您仅在内部明确使用这些错误的意图。
编辑:因为评论者正确地发现了我在上面括号中写的实际整数值在 POSIX 系统上也是如此。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.