C언어에서는 직접 메모리를 참조할 수 있습니다. 특히, 배열을 사용하는 경우가 해당되는데 일반적으로 변수나 포인터에 원하지 않는 값이 들어가도 이상없이 실행되는 것처럼 보일 때가 있습니다. 문제는 아주 특정한 상황에서 예상치 못하게 문제를 일으킵니다.
이런 에러를 발생 확률을 줄이기 위해 Assertion을 사용합니다.
#include <assert.h>
int mian()
{
char *assert_test = null;
assert(assert_test != null);
return 0;
}
위 코드를 실행하기 위하여 assert.h를 include해야합니다.
코드를 보면 assert함수를 실행하는데 조건문의 결과가 false(0)이 되면 에러를 발생시키면서 프로그램을 종료합니다.
assert를 사용하기 전에 complier에서 assertion의 지원 여부나 라이브러리의 사용법을 미리 알아야합니다. 만약 지원하지 않는다면 assert함수를 직접 만드는것도 하나의 방법입니다.
static void assert_handmaid(bool data, char *error_msg)
{
if(false == data)
{
printf(error_msg);
for(;;)
{
}
}
}
int main()
{
char* data = null;
assert_handmain(data != null, "error");
return 0;
}
위와 같이 assert_handmaid라는 함수를 따로 만들어 사용할 수 있습니다.
for(;;)는 error message를 띄우고 무한루프에 빠져 다음 코드로 진행하지 못하기 위함입니다.