使用errno和用户定义的错误代码?

时间:2011-06-22 10:07:05

标签: c error-handling

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

1)保留表示成功的返回值(非零值),错误(0)。

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

3)使用参数返回值。

如果可以,那么我可以定义自己的错误代码(与现有代码不冲突)并使用errno设置/检索它们。我不认为现在我可以使用perror与这些代码(它总是会说:未知错误)但我可以定义自己的基于开关案例的函数来返回错误代码的描述。我可以定义我自己的变量但是已经做了很多工作来制作errno modern and thread safe.

例如:

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

感谢。

1 个答案:

答案 0 :(得分:3)

我认为现在没有人会设计像errno这样的错误处理系统。即使使用线程局部存储实现errno,它仍然远非理想 - 它仍然是一个全局变量。

由于您没有基于异常的错误处理,我建议将错误代码作为函数返回值返回。这允许您使用堆栈,避免全局状态,因此可以适应线程和可重入调用模式。