정의
assert.h는 C 표준 라이브러리와 C++ 표준 라이브러리에서 제공하는 헤더 파일 중 하나로, 프로그램 실행 중에 조건 검증을 수행하기 위한 assert 매크로를 정의한다.
개요
assert.h는 C 표준(ISO/IEC 9899) 및 C++ 표준(ISO/IEC 14882)에서 포함되어 있으며, 주로 디버깅 단계에서 개발자가 가정한 전제가 만족되는지를 확인하는 용도로 사용된다. 매크로 assert는 인수로 주어진 식(expression)이 거짓(0)일 경우, 표준 오류 스트림(stderr)에 파일명, 행 번호, 식 내용을 출력하고 abort() 함수를 호출하여 프로그램을 비정상 종료한다.
NDEBUG 매크로가 정의된 경우, assert는 전혀 코드가 삽입되지 않도록 전처리 단계에서 무시된다. 따라서 릴리즈 빌드에서 디버깅 검증 코드를 제거할 수 있다.
어원/유래
assert라는 단어는 라틴어 assertus(확언된, 주장된)에서 유래했으며, 프로그래밍에서 “조건을 확언한다”는 의미로 차용되었다. assert.h 헤더 자체는 초기 C 언어 구현에 포함된 것이 아니라, 1989년에 제정된 ANSI C 표준(ANSI X3.159‑1989, 이후 ISO/IEC 9899)에서 공식적으로 정의되었다.
특징
| 특징 | 내용 |
|---|---|
| 제공 매크로 | assert(expression) |
| 동작 조건 | expression이 거짓이면 오류 메시지를 출력하고 abort() 호출 |
| 비활성화 방법 | #define NDEBUG를 포함하거나 컴파일 옵션으로 -DNDEBUG 지정 |
| 헤더 포함 방식 | #include <assert.h> (C) 또는 #include <cassert> (C++에서 동일 기능) |
| 사용 목적 | 디버깅 시 전제조건 검증, 런타임 오류 조기 탐지 |
| 표준화 | ISO C (C89 이후) 및 ISO C++ 표준에 포함 |
| 영향 | 다른 언어·프레임워크에서도 유사한 assert 메커니즘을 차용함 |
관련 항목
stdlib.h– 표준 라이브러리에서abort()함수를 제공NDEBUG–assert매크로를 비활성화하기 위한 전처리 매크로assert(C++ 표준 라이브러리) –<cassert>헤더를 통한 동일 기능 제공debugging– 프로그램 오류를 찾고 수정하는 과정 전반ISO/IEC 9899– C 프로그래밍 언어 표준 문서ISO/IEC 14882– C++ 프로그래밍 언어 표준 문서