programing

오류 값을 설정하는 방법은 무엇입니까?

batch 2023. 6. 15. 21:43
반응형

오류 값을 설정하는 방법은 무엇입니까?

저는 두 가지 다른 방법에 대해 두 가지 통화가 있습니다.

void func1() 
{
  // do something 
  if (fail) 
  {
    // then set errno to EEXIST

  }

}

그리고 두 번째 방법은:

void func2() 
{
  // do something 
  if (fail) 
  {
    // then set errno to ENOENT

  }

}
  1. 가 때할정설을 때.errno, ? 확인? 떤가치로무합, 을엇니까은그것? 단지 오류 확인?

  2. 을 어떻게 합니까?errnofunc1그리고.func2EEXIST그리고.ENOENT

감사해요.

모든 실질적인 목적을 위해, 당신은 치료할 수 있습니다.errno글로벌 변수처럼(보통 그렇지는 않지만).그래서 포함합니다.errno.h그리고 그냥 사용하세요:

errno = ENOENT;

당신은 스스로에게 물어보아야 합니다.errno는 사용자의 목적에 가장 적합한 오류 감지 메커니즘입니다.오류 코드 자체를 반환하도록 기능을 설계할 수 있습니까?

IMO, 표준errno시스템 수준에 맞게 설계되었습니다.저의 경험은 그것들을 오염시키지 않는 것입니다.이 C 표준을 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의 구현을 참조하시기 바랍니다.

#include <errno.h>
void func1() 
{
  // do something 
  if (fail) 
  {
    errno = ENOENT;
  }
}

언급URL : https://stackoverflow.com/questions/11699596/how-to-set-errno-value

반응형