assert.h

上一頁 | 首頁

    1 /*************************************************************************
    2  * assert.h : ISO C90 標準頭文件。
    3  * 版權 (C) 2010 石仔<guoshimin57@gmail.com>
    4  * 本程序為自由軟件:你可以依據自由軟件基金會所發布的第三版GNU通用公共
    5  * 許可證重新發布、修改本程序。
    6  * 雖然基于使用目的而發布本程序,但不負任何擔保責任,亦不包含適銷性或特
    7  * 定目標之適用性的擔保。詳見GNU通用公共許可證。
    8  * 你應該已經收到一份附隨此程序的GNU通用公共許可證副本。否則,請參閱
    9  * <http://www.gnu.org/licenses/>。
   10  * ************************************************************************/
   11 
   12 /* 若不是第一次包含本文件,則撤消本文件所定義的宏的定義 */
   13 #ifdef _ASSERT_H
   14     #undef assert
   15 #endif
   16 
   17 /* 若定義了NDEBUG,則assert不執行任何操作。否則,若斷言失敗,則向標準錯誤
   18  * 文件寫入診斷信息,並調用abort;若斷言成功,則不執行任何操作。 */
   19 #ifdef NDEBUG
   20     #define assert(expr)    ((void) 0)
   21 #else
   22     #ifndef _ASSERT_H   /* 只在本文件第一次被包含時,才聲明__assert */
   23         extern void __assert(const char *file, unsigned int line,
   24             const char *assertion);
   25     #endif
   26     #define assert(expr)    \
   27         ( (expr) ?  \
   28           ((void) 0) :  \
   29           __assert(__FILE__, __LINE__, #expr) \
   30         )
   31 #endif
   32 
   33 #define _ASSERT_H


版權 © 2024 石仔