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