NAME

assert_perror - 오류 번호 검사해서 중단하기

SYNOPSIS

#define _GNU_SOURCE         /* feature_test_macros(7) 참고 */
#include <assert.h>

void assert_perror(int errnum);

DESCRIPTION

<assert.h>를 마지막으로 포함하는 시점에 매크로 NDEBUG가 정의돼 있으면 assert_perror() 매크로가 아무 코드도 만들지 않고, 그래서 아무것도 하지 않는다. 그 밖의 경우엔 errnum이 0이 아니면 표준 오류로 오류 메시지를 찍고 abort(3) 호출로 프로그램을 종료시킨다. 그 메시지에는 매크로 호출이 있는 파일 이름, 함수 이름, 행 번호, 그리고 strerror(errnum)의 출력이 담긴다.

RETURN VALUE

아무 값도 반환하지 않는다.

ATTRIBUTES

이 절에서 사용하는 용어들에 대한 설명은 attributes(7)를 보라.

인터페이스 속성
assert_perror() 스레드 안전성 MT-Safe

CONFORMING TO

GNU 확장이다.

BUGS

assert 매크로의 목적은 프로그래머가 자기 프로그램에서 코딩 실수가 아니라면 발생할 수 없는 종류의 버그들을 찾는 걸 돕는 것이다. 하지만 시스템 호출이나 라이브러리 호출에서는 상황이 좀 달라서, 오류 반환이 일어날 수 있고, 일어날 것이고, 그래서 검사를 해야 한다. 하지만 NDEBUG가 정의돼 있으면 검사가 사라지는 assert를 통해서가 아니라 올바른 오류 처리 코드를 통해서 해야 한다. 절대 이 매크로를 쓰지 마라.

SEE ALSO

abort(3), assert(3), exit(3), strerror(3)


2021-03-22