assert
원형 :
void assert(int test);
헤더파일 :
assert.h
기능 :
인수로 전달되는 test가 0이면 프로그램을 종료한다.
test인수는 정수형이지만 보편적으로 논리식이 들어가므로 (논리식의 결과가 정수값이므로 가능하다) assert는 논리식을 평가하여 논리식이 거짓이 될 경우 프로그램을 끝내게 된다. testrk 0이 되면 assert는 다음과 같은 메세지를 stdern(화면)로 출력하고 abort함수를 호출하여 종료한다.
Assertino failed<조건식>, file<파일이름>, line<줄번호>
Abnormal program termination.
출력된 파일이름은 소스 파일의 이름이며 줄번호는 소스 파일에 assert문이 있는 줄번호이다. assert는 assert.h에 다음과 같이 정의 되어 있는 매크로 함수이다.
#define assert(p);
((p)?(void)0:(void)__assertfail(\
"Assertion failed: %s, file %s, line %d" _ENDL, \
#p, __file__, __LINE__))
이 매크로 정의 문은 NDEBUG 매크로가 정의 되지 않았다는 조건하에서 컴파일이 되므로 (직접 asserth를 보면 조건부 컴파일로 되어 있다.)
#include <assert.h> 전에 #define NDEBUG를 삽입해 주면 assert 매크로는 NULL 코드를 가지도록 정의 된다. assert 함수가 디버깅중 의심나는 곳에 임시로 삽입되어 프로그램 실행중의 일정조건을 테스트하는 목적으로 쓰여지므로 디버깅중이 아닐때는 그 기능을 중지시킬수 있도록 되어 있다.
리턴값 :
없음
참고 함수 :
abort, exit
다음 예제는 입력된 정수 하나와 10을 나눗셈한 결괄르 계속해서 보여준다.
// -----------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int main(int argc, char *argv[])
{
int i;
for(;;)
{
printf("Input a number : ");
scanf("%d",&i);
assert(i!=0);
printf("10.0 / i = %f", 10./i);
}
return 0;
}
0이 입력되었을 경우 출력결과
Input a number : 5
10.0/i = 2.000000
Input a number : 3
10.0/i = 3.333333
Input a number : 0
Assertion failed : i!=0 file ASSERT.CPP, line 10
Abnormal program termination
원형 :
void assert(int test);
헤더파일 :
assert.h
기능 :
인수로 전달되는 test가 0이면 프로그램을 종료한다.
test인수는 정수형이지만 보편적으로 논리식이 들어가므로 (논리식의 결과가 정수값이므로 가능하다) assert는 논리식을 평가하여 논리식이 거짓이 될 경우 프로그램을 끝내게 된다. testrk 0이 되면 assert는 다음과 같은 메세지를 stdern(화면)로 출력하고 abort함수를 호출하여 종료한다.
Assertino failed<조건식>, file<파일이름>, line<줄번호>
Abnormal program termination.
출력된 파일이름은 소스 파일의 이름이며 줄번호는 소스 파일에 assert문이 있는 줄번호이다. assert는 assert.h에 다음과 같이 정의 되어 있는 매크로 함수이다.
#define assert(p);
((p)?(void)0:(void)__assertfail(\
"Assertion failed: %s, file %s, line %d" _ENDL, \
#p, __file__, __LINE__))
이 매크로 정의 문은 NDEBUG 매크로가 정의 되지 않았다는 조건하에서 컴파일이 되므로 (직접 asserth를 보면 조건부 컴파일로 되어 있다.)
#include <assert.h> 전에 #define NDEBUG를 삽입해 주면 assert 매크로는 NULL 코드를 가지도록 정의 된다. assert 함수가 디버깅중 의심나는 곳에 임시로 삽입되어 프로그램 실행중의 일정조건을 테스트하는 목적으로 쓰여지므로 디버깅중이 아닐때는 그 기능을 중지시킬수 있도록 되어 있다.
리턴값 :
없음
참고 함수 :
abort, exit
다음 예제는 입력된 정수 하나와 10을 나눗셈한 결괄르 계속해서 보여준다.
// -----------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
int main(int argc, char *argv[])
{
int i;
for(;;)
{
printf("Input a number : ");
scanf("%d",&i);
assert(i!=0);
printf("10.0 / i = %f", 10./i);
}
return 0;
}
0이 입력되었을 경우 출력결과
Input a number : 5
10.0/i = 2.000000
Input a number : 3
10.0/i = 3.333333
Input a number : 0
Assertion failed : i!=0 file ASSERT.CPP, line 10
Abnormal program termination
'Native > C' 카테고리의 다른 글
[레퍼런스] atof(); (0) | 2013.10.02 |
---|---|
[레퍼런스] atexit() (0) | 2013.10.02 |
[레퍼런스] access() (0) | 2013.10.02 |
[레퍼런스] abs() (0) | 2013.10.02 |
구조체 배열 파일로 저장하기 (0) | 2013.10.02 |