`
silentpassing
  • 浏览: 6679 次
  • 性别: Icon_minigender_1
  • 来自: 冰岛
最近访客 更多访客>>
社区版块
存档分类
最新评论

C标准库分析之<assert.h>

阅读更多

2011年 03月 03日 星期四 15:47:42 CST

/* "__FILE__"是预定义的宏(也叫内置宏),值是所在文件的文件名(字符串字面量) */
/* "__LINE__"是预定义的宏,值是调用的语句所在文件中的行数(是十进制常量) */
/* assert.h standard header */
#undef assert  /* 良性取消assert定义 */

#ifdef NDEBUG
    #define assert(test) ((void) 0)    /* 如果已定义了NDEBUG,那么assert函数不执行任何操作 */
#else
    void _Assert(char *);
   
    #define _STR(x) _VAL(x)
    #define _VAL(x) #x    /* 井号在此是预处理运算符——字符串化运算符 */
    #define assert(test) ((test) ? (void) 0 \    /* "(void) 0"表示什么也不做 */
     : _Assert(__FILE__ ":" _STR(__LINE__) " " #test))    /* 使用了条件表达式"a ? b : c" */   
     /* 理解"_STR(__LINE__)":宏定义里有用'#'或'##'的地方宏参数是不会再展开的 */
#endif

   

/* xassert.c */    /* 库中隐藏的函数和数据对象通常占据以x开头命名的C源文件 */
/* _Assert function */
#include <assert.h>
#include <stdio.h>    /* fputs函数在stdio.h中声明 */
#include <stdlib.h>    /* abort函数在stdlib.h中声明 */

void _Assert(char *mesg)
{
    fputs(mesg, stderr);    /* 把字符串写到标准输出流stderr里 */
    fputs(" -- assertion failed\n", stderr);
    abort();    /* 调用函数abort异常终止程序的执行 */
}

/* 源码来自 The Standard C Library, by P.J.Plauger */
/* 代码注释为原创 */

 

1
2
分享到:
评论

相关推荐

    #include

    C语言标准库包含 #### `#include &lt;stdio.h&gt;` `stdio.h` 是 C 语言的标准输入输出库,提供了诸如 `printf`, `scanf`, `fopen`, `fclose` 等用于文件和控制台输入输出操作的函数。 #### `#include &lt;stdlib.h&gt;` `...

    C语言标准函数库详解.pdf

    这些头文件包括:&lt;assert.h&gt;、&lt;ctype.h&gt;、&lt;errno.h&gt;、&lt;limits.h&gt;、&lt;locale.h&gt;、&lt;math.h&gt;、&lt;setjmp.h&gt;、&lt;signal.h&gt;、&lt;stdarg.h&gt;、&lt;stddef.h&gt;、&lt;stdio.h&gt;、&lt;stdlib.h&gt;、&lt;time.h&gt;等。 每个头文件都提供了不同的函数,...

    C、C++头文件函数大全

    在C++中,`&lt;string&gt;`头文件提供了C++标准库中的`std::string`类,这是非常强大且灵活的字符串处理工具,而`&lt;string.h&gt;`则属于C库,包含一些C风格的字符串处理函数,如`strcpy()`。在C++中使用`std::string`通常更...

    [C标准库].P.J.Plauger.扫描版.pdf

    C标准库还有一组类型定义和宏定义,它们被定义在`&lt;stdint.h&gt;`、`&lt;stdbool.h&gt;`、`&lt;stddef.h&gt;`等头文件中,用于标准化整数类型、布尔类型和指针/数组的大小。 除了上述功能性的划分,C标准库的实现也有着严格的标准...

    C语言函数库详解(收藏版).docx

    ### C语言函数库详解 #### 第一章:C标准库概览 本章节将详细介绍C语言...以上介绍了 `&lt;assert.h&gt;`、`&lt;ctype.h&gt;`、`&lt;errno.h&gt;`、`&lt;limits.h&gt;` 和 `&lt;locale.h&gt;` 的基本概念和用法,希望对学习C语言的读者有所帮助。

    C标准库文档,包括标准库中12个头文件的描述

    * &lt;assert.h&gt; : Diagnostics * &lt;ctype.h&gt; : Character Class Tests * &lt;errno.h&gt; : Error Codes Reported by (Some) Library Functions * &lt;float.h&gt; : Implementation-defined Floating-Point Limits * &lt;limits....

    C标准库.The Standard C Library

    《C标准库.The Standard C Library》是一本深入探讨C语言标准库的重要著作。C标准库是C编程语言的核心部分,提供了大量的函数和数据类型,使得程序员可以高效地进行系统级和应用级编程。这本书详细阐述了C标准库中的...

    C标准库介绍PPT

    除了这些,C标准库还有许多其他头文件,如控制内存分配的`&lt;memory.h&gt;`,处理动态数组的`&lt;array.h&gt;`,实现线程的`&lt;threads.h&gt;`,以及处理宽字符和多字节字符的`&lt;wchar.h&gt;`和`&lt;wctype.h&gt;`等。 学习C标准库的关键在于...

    C语言 标准函数库 详解

    以上介绍了C语言标准库中的几个重要部分,包括诊断、字符类别测试、错误处理、整型常量定义以及地域环境管理。掌握这些库的使用方法对于开发高质量的C程序至关重要。通过使用这些标准库,开发者可以避免重复造轮子,...

    C语言头文件大全.pdf

    18. &lt;stdio.h&gt;:标准I/O库 19. &lt;stdlib.h&gt;:实用程序库函数 20. &lt;string.h&gt;:字符串操作 21. &lt;tgmath.h&gt;:通用类型数学宏 22. &lt;time.h&gt;:时间和日期 23. &lt;wchar.h&gt;:宽字符支持 24. &lt;wctype.h&gt;:宽字符分类和映射...

    电子-C标准库源代码.zip

    这个名为"电子-C标准库源代码.zip"的压缩包文件包含的是C标准库的源代码,对于深入理解和学习C语言,以及计算机科学的基本原理具有极大的价值。 C标准库主要由ISO/IEC 9899标准定义,通常被称为C99或C11标准,这些...

    C语言头文件大全1[参考].pdf

    在C语言编程中,头文件是至关重要的,它们包含了预定义的函数、常量、类型定义和其他编程元素,使得程序员可以方便地使用标准库。下面将详细介绍一些常见的C语言头文件及其功能: 1. `&lt;assert.h&gt;`:包含断言宏,...

    C标准库函数集.rar

    6 诊断 &lt;assert.h&gt; . 43 7 变长变元表 &lt;stdarg.h&gt; 44 8 非局部跳转 &lt;setjmp.h&gt; . . . . . . . . . . 45 9 信号处理 &lt;signal.h&gt; . . . . . 46 10 日期与时间函数 &lt;time.h&gt; . . . . 48 11 由实现定义的限制 ...

    Standard C 语言标准函数库速查.pdf

    【C语言标准函数库速查】是C程序员的重要参考资料,涵盖了C语言标准库中的关键函数。C++虽然作为C的扩展,但C语言的基础和核心功能在C++中仍然适用,因此这个速查表对C++开发者同样有价值。 1. **字符串函数**:如`...

    C语言函数库详解(收藏版)

    C语言函数库是C标准库的重要组成部分,它是为C语言程序员提供的各种标准函数的集合,这些函数可以用来执行各种常见的任务,如输入/输出、内存操作、数学计算、系统调用等。下面将详细介绍各函数库的内容及其用途。 ...

    c语言对自己电脑系统测试.rar

    - 虽然C语言标准库没有提供直接获取CPU信息的函数,但可以通过系统调用(如在Linux下的`/proc/cpuinfo`文件)或特定平台的API来获取。 3. **内存管理**: - C语言允许程序员直接控制内存,`&lt;malloc.h&gt;`和`&lt;stdlib...

    C 标准库

    以上介绍的 `&lt;assert.h&gt;`、`&lt;ctype.h&gt;`、`&lt;errno.h&gt;` 和 `&lt;float.h&gt;` 只是C标准库中的一部分内容,它们各自承担着重要的角色:从错误检测到字符分类再到浮点数的细节管理。理解并熟练掌握这些库的功能对于C语言...

    C语言头文件库

    本压缩包文件库汇聚了所有C语言的标准头文件,这些文件是C语言标准库的核心组成部分。 1. **预处理指令#include**:在C语言中,`#include` 是预处理指令,用于将指定的头文件内容插入到源代码中。这样可以避免代码...

    C标准库-中文

    C标准库,全称为C语言标准库,是C编程语言的核心组成部分,为程序员提供了一系列预定义的函数和宏,用于实现基本的数据操作、输入/输出、字符串处理、数学计算等功能。这个中文版的C标准库详细参考,是学习和理解...

Global site tag (gtag.js) - Google Analytics