더북(TheBook)

1.6.1 단정

헤더 <cassert>의 매크로 assert는 C에서 상속받은 매크로지만 여전히 유용하다. 표현식을 계산한 뒤 결과가 false면 프로그램을 즉시 종료한다. assert는 프로그래밍 오류를 감지하는 데 사용해야 한다. 음수가 아닌 실수의 제곱근을 계산하는 멋진 알고리즘을 구현한다고 가정해 보자. 그렇다면 우리는 수학에서 결과가 음이 아님을 안다. 그렇지 않으면 계산이 뭔가 잘못되었다는 것이다.

#include <cassert>

double square_root(double x)
{
    check_somehow(x >= 0);
    ...
    assert(result >= 0.0);

    return result;
}

첫 줄에 있는 검사 함수를 구현하는 방법은 잠시 미뤄두자. assert의 결과가 false라면 프로그램은 다음과 같은 오류를 출력한다.

assert_test: assert_test.cpp:10: double square_root (double):

Assertion 'result >= 0.0' failed.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.