assert.h

정의
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() 함수를 제공
  • NDEBUGassert 매크로를 비활성화하기 위한 전처리 매크로
  • assert (C++ 표준 라이브러리) – <cassert> 헤더를 통한 동일 기능 제공
  • debugging – 프로그램 오류를 찾고 수정하는 과정 전반
  • ISO/IEC 9899 – C 프로그래밍 언어 표준 문서
  • ISO/IEC 14882 – C++ 프로그래밍 언어 표준 문서
둘러보기

더 찾아볼 만한 주제