断言宏assert

  • assert()宏主要用于辅助测试程序;
  • assert()宏当表达式求值为假(非零)时,assert()宏就在标准错误流(stderr)写入一条错误信息(包括出错文件行号)并调用abort()函数终止程序;
  • 头文件assert.h
  • 源代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #if defined(_UNICODE) || defined(UNICODE)
    #define assert(_Expression) \
    (void) \
    ((!!(_Expression)) || \
    (_wassert(_CRT_WIDE(#_Expression),_CRT_WIDE(__FILE__),__LINE__),0))
    #else /* not unicode */
    #define assert(_Expression) \
    (void) \
    ((!!(_Expression)) || \
    (_assert(#_Expression,__FILE__,__LINE__),0))
    #endif /* _UNICODE||UNICODE */
  • 在程序中定义#define NDEBUG即可禁用断言