본문으로 바로가기

바다야크

  1. Home
  2. 컴퓨터/프로그래밍
  3. C언어 주어진 조건 확인 함수 assert()

C언어 주어진 조건 확인 함수 assert()

· 댓글개 · 바다야크

C함수 주어진 조건 확인 assert()

assert는 주어진 조건이 거짓이면 오류 메시지 출력과 함께 코어 덤프를 출력하고 프로그램을 종료합니다.

  • 헤더: assert.h
  • 형태: void assert(scalar expression)
  • 인수: scalar expression 조건식
  • 반환: -

코어 덤프란?

실행 중인 프로그램에 대한 정보를 core라는 이름으로 파일로 저장하는 것을 코어 덤프라고 합니다. 만들어진 core는 디버깅에 사용됩니다.

그러나 실제로 사용해 보면 파일에 core를 만들지는 않는군요. 다른 옵션이 있는지 모르겠습니다만, 대신에 assert() 함수는 파일 이름과 행 번호를 알려주기 때문에 디버깅에 더 편리합니다.

C언어 assert() 함수 예제 1

#include <stdio.h>  
#include <assert.h>

int main( void)
{
   int   a, b;

   a  = 100;
   b  = 0;
   
   assert( b != 0);
   
   printf( "%d\n", (int)(a /b));

   return 0;
}

C언어 assert() 예제 실행 결과

]$ ./a.out
a.out: main.c:12: main: Assertion `b != 0' failed.
중지됨
]$

C언어 assert() 함수 예제 2

디버깅을 위해 assert()는 매우 편한 함수입니다. 그러나 나중에 정식으로 납품되는 프로그램에 assert()를 남겨 놓을 수는 없습니다. 그럼 일일이 모두 지워 주어야 하는데 쉬운 일이 아닙니다.

이럴 때에는 assert.h 앞에 NDEBUG를 정의하면 컴파일할 때 자동으로 assert() 코드를 제거하여 컴파일하게 됩니다.

#include <stdio.h> 
#define NDEBUG 
#include <assert.h>

int main( void)
{
   int   a, b;

   a  = 100;
   b  = 0;
   
   assert( b != 0);
   
   printf( "%d\n", (int)(a /b));

   return 0;
}

C언어 assert() 예제 실행 결과

]$ ./a.out
부동 소수점 예외
]$
SNS 공유하기
💬 댓글 개
이모티콘창 닫기
울음
안녕
감사해요
당황
피폐

이모티콘을 클릭하면 댓글창에 입력됩니다.