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 */
/* 代码注释为原创 */
分享到:
相关推荐
C语言标准库包含 #### `#include <stdio.h>` `stdio.h` 是 C 语言的标准输入输出库,提供了诸如 `printf`, `scanf`, `fopen`, `fclose` 等用于文件和控制台输入输出操作的函数。 #### `#include <stdlib.h>` `...
这些头文件包括:<assert.h>、<ctype.h>、<errno.h>、<limits.h>、<locale.h>、<math.h>、<setjmp.h>、<signal.h>、<stdarg.h>、<stddef.h>、<stdio.h>、<stdlib.h>、<time.h>等。 每个头文件都提供了不同的函数,...
在C++中,`<string>`头文件提供了C++标准库中的`std::string`类,这是非常强大且灵活的字符串处理工具,而`<string.h>`则属于C库,包含一些C风格的字符串处理函数,如`strcpy()`。在C++中使用`std::string`通常更...
C标准库还有一组类型定义和宏定义,它们被定义在`<stdint.h>`、`<stdbool.h>`、`<stddef.h>`等头文件中,用于标准化整数类型、布尔类型和指针/数组的大小。 除了上述功能性的划分,C标准库的实现也有着严格的标准...
### C语言函数库详解 #### 第一章:C标准库概览 本章节将详细介绍C语言...以上介绍了 `<assert.h>`、`<ctype.h>`、`<errno.h>`、`<limits.h>` 和 `<locale.h>` 的基本概念和用法,希望对学习C语言的读者有所帮助。
* <assert.h> : Diagnostics * <ctype.h> : Character Class Tests * <errno.h> : Error Codes Reported by (Some) Library Functions * <float.h> : Implementation-defined Floating-Point Limits * <limits....
《C标准库.The Standard C Library》是一本深入探讨C语言标准库的重要著作。C标准库是C编程语言的核心部分,提供了大量的函数和数据类型,使得程序员可以高效地进行系统级和应用级编程。这本书详细阐述了C标准库中的...
除了这些,C标准库还有许多其他头文件,如控制内存分配的`<memory.h>`,处理动态数组的`<array.h>`,实现线程的`<threads.h>`,以及处理宽字符和多字节字符的`<wchar.h>`和`<wctype.h>`等。 学习C标准库的关键在于...
以上介绍了C语言标准库中的几个重要部分,包括诊断、字符类别测试、错误处理、整型常量定义以及地域环境管理。掌握这些库的使用方法对于开发高质量的C程序至关重要。通过使用这些标准库,开发者可以避免重复造轮子,...
18. <stdio.h>:标准I/O库 19. <stdlib.h>:实用程序库函数 20. <string.h>:字符串操作 21. <tgmath.h>:通用类型数学宏 22. <time.h>:时间和日期 23. <wchar.h>:宽字符支持 24. <wctype.h>:宽字符分类和映射...
这个名为"电子-C标准库源代码.zip"的压缩包文件包含的是C标准库的源代码,对于深入理解和学习C语言,以及计算机科学的基本原理具有极大的价值。 C标准库主要由ISO/IEC 9899标准定义,通常被称为C99或C11标准,这些...
在C语言编程中,头文件是至关重要的,它们包含了预定义的函数、常量、类型定义和其他编程元素,使得程序员可以方便地使用标准库。下面将详细介绍一些常见的C语言头文件及其功能: 1. `<assert.h>`:包含断言宏,...
6 诊断 <assert.h> . 43 7 变长变元表 <stdarg.h> 44 8 非局部跳转 <setjmp.h> . . . . . . . . . . 45 9 信号处理 <signal.h> . . . . . 46 10 日期与时间函数 <time.h> . . . . 48 11 由实现定义的限制 ...
【C语言标准函数库速查】是C程序员的重要参考资料,涵盖了C语言标准库中的关键函数。C++虽然作为C的扩展,但C语言的基础和核心功能在C++中仍然适用,因此这个速查表对C++开发者同样有价值。 1. **字符串函数**:如`...
C语言函数库是C标准库的重要组成部分,它是为C语言程序员提供的各种标准函数的集合,这些函数可以用来执行各种常见的任务,如输入/输出、内存操作、数学计算、系统调用等。下面将详细介绍各函数库的内容及其用途。 ...
- 虽然C语言标准库没有提供直接获取CPU信息的函数,但可以通过系统调用(如在Linux下的`/proc/cpuinfo`文件)或特定平台的API来获取。 3. **内存管理**: - C语言允许程序员直接控制内存,`<malloc.h>`和`<stdlib...
以上介绍的 `<assert.h>`、`<ctype.h>`、`<errno.h>` 和 `<float.h>` 只是C标准库中的一部分内容,它们各自承担着重要的角色:从错误检测到字符分类再到浮点数的细节管理。理解并熟练掌握这些库的功能对于C语言...
本压缩包文件库汇聚了所有C语言的标准头文件,这些文件是C语言标准库的核心组成部分。 1. **预处理指令#include**:在C语言中,`#include` 是预处理指令,用于将指定的头文件内容插入到源代码中。这样可以避免代码...
C标准库,全称为C语言标准库,是C编程语言的核心组成部分,为程序员提供了一系列预定义的函数和宏,用于实现基本的数据操作、输入/输出、字符串处理、数学计算等功能。这个中文版的C标准库详细参考,是学习和理解...