2

假设我有一个程序,其中有一个非常类似于errno(命名project_error)的全局变量,其中存储了过去发生的确切错误,但我还希望函数返回简单的 OK/NOK 状态以简化错误处理,以便我只检查project_error是否返回 NOK。

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

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

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

4

1 回答 1

2

正如您所说,EXIT_SUCCESS (0) 和 EXIT_FAILURE (1) 只是 stdlib 定义的宏,它们在 POSIX 系统上设置为这些整数,以便调用父进程只是对程序的退出状态有一个模糊的了解(glibc 参考)。我想说,因为这是供您自己内部使用的,如果您使用这些确切的值,只会让读者感到困惑。更好地定义您自己的名称,以使您使用这些错误的意图仅在内部清楚。

编辑:作为评论者正确地发现了我在上面括号中写的实际整数值在 POSIX 系统上也是如此。

于 2019-02-01T20:32:09.997 回答