JAN*_*JAN 29 c linux error-handling errno
我有两种不同方法的调用:
void func1()
{
// do something
if (fail)
{
// then set errno to EEXIST
}
}
Run Code Online (Sandbox Code Playgroud)
第二种方法:
void func2()
{
// do something
if (fail)
{
// then set errno to ENOENT
}
}
Run Code Online (Sandbox Code Playgroud)
当我设置errno为某个值时,它会做什么?只是错误检查?
我怎样才能设置errno在上面的方法func1,并func2以EEXIST和ENOENT
谢谢
cni*_*tar 56
出于所有实际目的,您可以errno像对待全局变量一样对待(尽管通常不会).所以包括errno.h并使用它:
errno = ENOENT;
Run Code Online (Sandbox Code Playgroud)
您应该问自己,errno对于您的目的,是否是最好的错误报告机制.功能是否可以设计为自己返回错误代码?
IMO,errno为系统级设计的标准.我的经验是不污染他们.如果要模拟C标准errno机制,可以执行以下定义:
/* your_errno.c */
__thread int g_your_error_code;
/* your_errno.h */
extern __thread int g_your_error_code
#define set_your_errno(err) (g_your_error_code = (err))
#define your_errno (g_your_error_code)
Run Code Online (Sandbox Code Playgroud)
而且你仍然可以实现your_perror(err_code).更多信息,请参考glibc的实现.
#include <errno.h>
void func1()
{
// do something
if (fail)
{
errno = ENOENT;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
35627 次 |
| 最近记录: |