C语言的标准库包括15个部分,每一个部分都有一个头描述。标准头主要由函数原型、类型定义以及宏定义组成。如果使用了标准库中的函数,就要将相应的标准头使用#include
包含进来。
标准头名 | 功能 | 描述 |
---|---|---|
<assert.h> | 诊断 | 仅包含assert 宏。可以在程序中使用该宏来诊断程序状态(例如某个变量是否为0等),若检查失败,程序终止。 |
<ctype.h> | 字符处理 | 包含判断字符类型及大小写转换的函数。 |
<errno.h> | 错误监测 | 提供了errno 。可以在调用特定库函数后检测errno 的值以判断调用过程中是否有错误发生。 |
<float.h> | 浮点数特性 | 提供了描述浮点数特性的宏。 |
<limits.h> | 整型特性 | 提供了描述整数类型和字符类型特性的宏。 |
<locale.h> | 本地化 | 提供了一些支持程序国际化的函数。 |
<math.h> | 数学计算 | 提供了大量用以数学计算的函数。 |
<setjmp.h> | 非本地跳转 | 提供了用于绕过正常的函数返回机制,从一个函数跳转到另一个正在活动的函数的setjmp 和longjmp 函数。 |
<signal.h> | 信号处理 | 提供了包括中断和运行时错误在内的异常情况处理函数。 |
<stdarg.h> | 不定参数 | 提供了支持函数处理不变个数的参数的工具。 |
<stddef.h> | 常用定义 | 提供了常用的类型和宏。 |
<stdio.h> | 输入输出 | 提供了大量输入输出函数。 |
<stdlib.h> | 常用实用函数 | 提供了大量实用的函数。 |
<string.h> | 字符串处理 | 提供了大量字符串处理函数。 |
<time.h> | 日期和时间 | 提供了获取、操纵和处理日期的函数。 |
包含了标准头的文件不能再使用标准库定义过的宏的名字作为其他元素的标识符,同时标准头中定义具有文件作用域的类型名不可以在文件中重定义。
标准库中经常在定义函数的同时,还定义了与函数同名的宏。默认情况下使用这样的函数,是使用宏调用,利用宏可以提高程序的运行速度。如果出于缩小可执行文件大小或获得函数指针的目的需要使用实际的函数,那么可以使用undef
来删除宏定义,同时也可以通过给函数名字加圆括号的方式来屏蔽宏调用。
/**************************************
* overveiw.c *
* *
* C语言中的标准头的使用 *
**************************************/
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
int max(int x, int y)
{
int larger = x > y ? x : y;
printf("%d与%d中的最大值为%d\n", x, y, larger);
return larger;
}
#define max(x,y) printf("宏调用:"); \
max(x,y)
int main()
{
int x = 0;
int y = 0;
printf("输入两个整数:");
scanf("%d%d", &x, &y);
max(x,y);
/*屏蔽宏调用*/
(max)(x,y);
# undef max
max(x,y);
return 0;
}
注意上例中与函数同名的宏定义出现在函数定义之后。
参考文献
- K.N. King 著,吕秀峰 译. C语言程序设计-现代方法. 人民邮电出版社
- http://blog.csdn.net/menggucaoyuan/article/details/8434405