이런 기능의 함수가 있었네..

 

assert(조건);

헤더파일 : assert.h

 

매개변수의 조건은 정상이어야 한고, 만약 조건과 다르다면 실행중인 프로그램을 종료해버린다.

 

잠깐, 근데 assert 가 무슨 뜻이야?

 

assert

아하, 강하게 주장하다. 프로그램을 바로 종료해버리니, 이런 단어로 함수명을 만들지 않았나 싶다.

 

그럼 어떻게 작동하나 보자.

a와 b가 있다. 그리고 두 변수의 값은 항상 달라야 한다. 그래서 assert 함수를 이용하여 만약 두 변수의 값이 같을 경우 프로그램을 종료시킨다. 이걸 함수로 표현하면 아래와 같다.

 

assert(a != b)

 

자, 그럼 예제를 보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
#include <assert.h>
#include <string.h>
 
void copy(char *dest, char *src)
{
    assert(dest != NULL); // dest is NULL, then abort
    assert(src != NULL);
 
    strcpy(dest, src);
}
 
int main()
{
    char s1[30];
    char *s2 = "hello, world";
 
    printf("%s\n", s2);
 
    copy(s1, s2);
    printf("%s\n", s1);
 
    copy(NULL, s2);
 
    return 0;
}
cs

위와 같이 코드를 짠 후, 결과값을 확인해보자.

Aborted

아하, 매개변수에 NULL이 들어가면 안되는데, NULL 값이 저장되니 assert에서 에러메시지를 출력하고 프로그램을 바로 종료시켜버리네.

 

뭔가, 치명적인 오류나 반드시 종료시켜야 할 경우, assert를 이용해서 조건에 맞지 않으면 바로 종료시키면 될 듯 하다.

'C' 카테고리의 다른 글

parameter 실수  (1) 2022.11.08
variable arg  (1) 2022.10.03
memset  (0) 2022.08.23
[Socket] thread  (0) 2022.06.28
function pointer 함수 포인터  (0) 2022.06.27

+ Recent posts