gwassert.h
上传用户:gzpyjq
上传日期:2013-01-31
资源大小:1852k
文件大小:1k
源码类别:

手机WAP编程

开发平台:

WINDOWS

  1. /*
  2.  * gwassert.h - assertions macros that report via log files
  3.  *
  4.  * Define our own version of assert that calls panic(), because the
  5.  * normal assert() prints to stdout which no-one will see.
  6.  *
  7.  * We also define a gw_assert_place macro so that we can easily use it
  8.  * data structure consistency checking function and report the place where
  9.  * the consistency checking function was called.
  10.  *
  11.  * Richard Braakman
  12.  * Lars Wirzenius
  13.  */
  14. #include "log.h"  /* for panic() */
  15. /* The normal assert() does nothing if NDEBUG is defined.  We honor both
  16.  * NDEBUG and our own NO_GWASSERT.  If NDEBUG is defined, we always turn
  17.  * on NO_GWASSERT, so that user code does not have to check for them
  18.  * separately. */
  19. #if defined(NDEBUG) && !defined(NO_GWASSERT)
  20. #define NO_GWASSERT
  21. #endif
  22. #ifdef NO_GWASSERT
  23. #define gw_assert(expr) ((void) 0)
  24. #define gw_assert_place(expr, file, lineno, func) ((void) 0)
  25. #else
  26. #define gw_assert(expr) 
  27. ((void) ((expr) ? 0 : 
  28.   (panic(0, "%s:%ld: %s: Assertion `%s' failed.", 
  29. __FILE__, (long) __LINE__, __func__, #expr), 0)))
  30. #define gw_assert_place(expr, file, lineno, func) 
  31. ((void) ((expr) ? 0 : 
  32.   (panic(0, "%s:%ld: %s: Assertion `%s' failed. " 
  33.            "(Called from %s:%ld:%s.)", 
  34.       __FILE__, (long) __LINE__, __func__, 
  35.       #expr, (file), (long) (lineno), (func)), 0)))
  36. #endif