在程序内部使用EXIT_SUCCESS / EXIT_FAILURE进行错误报告是否可以?

时间:2019-02-01 20:21:09

标签: c error-handling

比方说,我有一个程序,其中有一个类似于errno(名为project_error)的全局变量,在其中存储了过去发生的确切错误,但是我还希望函数返回一个简单的OK / NOK状态以简化错误处理,因此我仅检查project_error是否返回NOK。

如果我使用<stdlib.h>中定义的标准宏,可以吗?还是最好定义自己的宏,因为这些宏通常意味着您实际上已退出程序?

这可能是基于意见的,但我想知道是否有事实上的标准或惯例。

以这种方式返回的错误可能是“输入超出范围”类型的无害错误,这些错误只是拒绝用户输入并再次询问,或者是致命错误,需要调用者进行清理,发出警告并退出。这是通过读取全局变量而不是返回值来决定的。

1 个答案:

答案 0 :(得分:2)

正如您所说的,EXIT_SUCCESS(0)和EXIT_FAILURE(1)只是stdlib定义的宏,在POSIX系统上,这些宏被设置为这些int以供调用父进程使用,以便对程序的退出状态有一个模糊的概念({{3} }。我要说的是,由于这是供您自己内部使用的,因此,如果您使用这些确切的值,只会使读者感到困惑。更好地定义自己的名字,以使使用这些错误的意图仅在内部清晰可见。

编辑:由于注释者正确地发现了我在上面括号中所写的实际整数值,就像在POSIX系统上一样。

相关问题