比方说,我有一个程序,其中有一个类似于errno
(名为project_error
)的全局变量,在其中存储了过去发生的确切错误,但是我还希望函数返回一个简单的OK / NOK状态以简化错误处理,因此我仅检查project_error
是否返回NOK。
如果我使用<stdlib.h>
中定义的标准宏,可以吗?还是最好定义自己的宏,因为这些宏通常意味着您实际上已退出程序?
这可能是基于意见的,但我想知道是否有事实上的标准或惯例。
以这种方式返回的错误可能是“输入超出范围”类型的无害错误,这些错误只是拒绝用户输入并再次询问,或者是致命错误,需要调用者进行清理,发出警告并退出。这是通过读取全局变量而不是返回值来决定的。
答案 0 :(得分:2)
正如您所说的,EXIT_SUCCESS(0)和EXIT_FAILURE(1)只是stdlib定义的宏,在POSIX系统上,这些宏被设置为这些int以供调用父进程使用,以便对程序的退出状态有一个模糊的概念({{3} }。我要说的是,由于这是供您自己内部使用的,因此,如果您使用这些确切的值,只会使读者感到困惑。更好地定义自己的名字,以使使用这些错误的意图仅在内部清晰可见。
编辑:由于注释者正确地发现了我在上面括号中所写的实际整数值,就像在POSIX系统上一样。