鉴于this和this,这是我的策略(类似于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());
感谢。
答案 0 :(得分:3)
我认为现在没有人会设计像errno
这样的错误处理系统。即使使用线程局部存储实现errno
,它仍然远非理想 - 它仍然是一个全局变量。
由于您没有基于异常的错误处理,我建议将错误代码作为函数返回值返回。这允许您使用堆栈,避免全局状态,因此可以适应线程和可重入调用模式。