설명

assert.h는 표준 디버깅 도구로 사용할 수 있는 매크로 함수를 정의합니다.

헤더

1
2
#include <assert.h> // C
#include <cassert> // C++

매크로 함수(Macro Function)

assert(expression)

Parameters

expression

평가 받을 수 있는(to be evaluated) 표현식. 0으로 평가되면 실패로 간주하고 프로그램을 종료합니다.

Description

assertion(true라고 주장하는 식)을 평가하는 매크로 함수입니다.

인자로 넘긴 식이 0(false)이라고 평가되면 standard error에 기록되고 abort 함수를 호출합니다.

abort 함수가 호출되면 프로그램이 종료됩니다.

출력되는 메세지는 라이브러리마다 다르지만, 일반적으로 다음 내용을 포함하고 있습니다.

  • 표현식
  • 파일 이름
  • 함수 이름
  • 라인 넘버

assert는 런타임 에러가 아닌 프로그래밍 에러를 잡기 위한 용도로 설계되었습니다.

프로덕션에서는 #define NDEBUG 매크로를 정의하여 포함되지 않도록 합니다.

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* assert example */
#include <stdio.h> /* printf */
#include <assert.h> /* assert */

void print_number(const int* myInt) {
assert(myInt!=NULL);
printf("%d\n",*myInt);
}

int main () {
int a = 10;
int *b = NULL;
int *c = NULL;

b=&a;

print_number(b);
print_number(c);

return 0;
}
1
2
10
cassert: /home/jehwanyoo/CLionProjects/cassert/main.c:6: print_number: Assertion `myInt!=NULL' failed.

출처

cplusplus.com