将 errno 与用户定义的错误代码一起使用?

rsj*_*ani 1 c error-handling

鉴于,这是我的策略(类似于win32 api函数):

1)保留返回值,用于指示成功(非零值)、错误(0)。

2)使用 errno,perror 提供更多信息。关于错误的类型。

3)使用参数返回值。

如果可以,那么我可以定义自己的错误代码(不与现有代码冲突)并使用 errno 来设置/检索它们。我认为现在我无法将 perror 与这些代码一起使用(它总是会说:未知错误),但我可以定义自己的基于 switch case 的函数来返回错误代码的描述。我可以定义自己的变量,但是为了使 errno现代化且线程安全,我们已经做了很多工作。

例如:

int val;
if(MyPop(&val))
   pintf_s("\n %d popped from my stack. . .",val);
else
   printf_s(Myperror());
Run Code Online (Sandbox Code Playgroud)

谢谢。

Dav*_*nan 5

我认为现在没有人会设计像errno. 即使errno使用线程局部存储实现,它仍然远非理想\xe2\x80\x94,它本质上仍然是一个全局变量。

\n\n

由于您还没有长大基于异常的错误处理,我建议将错误代码作为函数返回值返回。这允许您使用堆栈,避免全局状态,从而对线程和可重入调用模式具有弹性。

\n