Как установить errno value?
у меня есть два вызова двух различных методов :
void func1()
{
// do something
if (fail)
{
// then set errno to EEXIST
}
}
и второй способ :
void func2()
{
// do something
if (fail)
{
// then set errno to ENOENT
}
}
когда я поставил
errnoк некоторому значению, что он делает ? просто проверка ошибок ?как я могу установить
errnoв вышеуказанных методовfunc1иfunc2toEEXISTиENOENT
спасибо
3 ответов
для всех практических целей можно рассматривать errno как глобальная переменная (хотя обычно это не так). Так что включайте!--2--> и просто использовать это:
errno = ENOENT;
вы должны спросить себя, если errno является лучшим механизмом отчетности об ошибках для ваших целей. Можно ли сконструировать функции для возврата самого кода ошибки ?
ИМО, стандартный 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'ы.