이런 기능의 함수가 있었네..
assert(조건);
헤더파일 : assert.h
매개변수의 조건은 정상이어야 한고, 만약 조건과 다르다면 실행중인 프로그램을 종료해버린다.
잠깐, 근데 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 |
위와 같이 코드를 짠 후, 결과값을 확인해보자.
아하, 매개변수에 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 |