我有两个对两个不同方法的调用:
void func1()
{
// do something
if (fail)
{
// then set errno to EEXIST
}
}
第二种方法:
void func2()
{
// do something
if (fail)
{
// then set errno to ENOENT
}
}
errno
设置为某个值时,它会做什么?只检查错误?func1
和func2
中的errno
设置为EEXIST
和ENOENT
谢谢
发布于 2012-07-28 16:55:18
出于所有实际目的,您可以将errno
视为全局变量(尽管通常并非如此)。所以请包含errno.h
并使用它:
errno = ENOENT;
您应该问问自己,对于您的目的,errno
是否是最好的错误报告机制。是否可以将函数设计为返回错误代码本身?
发布于 2013-01-20 11:57:06
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)
而且你仍然可以实现your_perror(err_code)
。详情请参考glibc的实现。
发布于 2012-07-28 16:55:51
#include <errno.h>
void func1()
{
// do something
if (fail)
{
errno = ENOENT;
}
}
https://stackoverflow.com/questions/11699596
复制相似问题