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 石仔