컴퓨터공부/C & C++ & STL

assert.h header, assert() 로 설명을 달자

achivenKakao 2009. 4. 9. 01:41

assert 함수는 아래와 같이 사용하는 거다!!

assert와 함께 설명까지!!! 이건 assert() 함수를 까보지 않고서는 하지 못하는 스킬이다.

god damm!!!! 너무 멋지잖아!!

assert( 0 != NULL && "포인터 메모리 할당을 실패했잖아" );

+

다음은 C99의 assert.h이다.

코드가 예술이다..

+

#include <stdio.h>
#include <stdlib.h>

// The following is an implementation of the Standard C99 version of <assert.h>:

/* assert.h header */
#undef assert
#ifdef NDEBUG
    #define assert(_Ignore) ((void)0)    // DEBUG를 사용하지 않으면 assert가 실행하지 않게 함
#else
    void _Assertfail(char *, char *, int, char *);
    #define assert(_Test) ((_Test)?((void)0):_Assertfail(#_Test,__FILE__,__LINE__,__func__))
#endif
/* END OF FILE */
/* xassertfail.c -- _Assertfail function */
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>

// test : assert error number
void _Assertfail(char *test, char *filename, int line_number, char *function_name)
{
    fprintf(stderr, "Assertion failed: %s, function %s, file %s, line %d.",
  test, function_name, filename, line_number);
    abort();
}

/* END OF FILE */


int main()

 assert( 0 != NULL && "포인터 메모리 할당을 실패했잖아" );
 
 return 0;
}

 



출처 : http://blog.naver.com/hermet?Redirect=Log&logNo=54763810