跳至内容

C 编程/代码库

来自 Wikibooks,开放世界开放书籍
上一章:GObject C 编程 下一章:语句

以下为标准 C99 版本的实现<assert.h>:

 /* assert.h header */
 #undef assert
 #ifdef NDEBUG
 #define assert(_Ignore) ((void)0)
 #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>
 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 */
上一章:GObject C 编程 下一章:语句
华夏公益教科书