第二章 UNIX标准及实现
2.2.1 ISO C
1、ISO C头文件
头文件 说明
<assert.h> 验证程序断言
<complex.h> 复数运算支持
<ctype.h> 字符分类和映射支持
<errno.h> 错误码
<fenv.h> 浮点环境
<float.h> 浮点支持
<inttypes.h> 整型格式转换
<iso646.h> 赋值、关系、一元操作符宏
<limits.h> 实现常量
<locale.h> 本地化支持
<math.h> 数学运算库
<setjmp.h> 非局部goto
<signal.h> 信号支持
<stdarg.h> 可变长度参数
<stdbool.h> 布尔类型支持
<stddef.h> 标准定义
<stdint.h> 标准整形
<stdio.h> 标准输入输出
<stdlib.h> 实用函数库
<string.h> 字符串操作
<tgmath.h> 通用类型数学宏
<time.h> 时间日期支持
<wchar.h> 多字节宽字符支持
<wctype.h> 宽字符分类和映射支持
限制
1、由于大量标准化工作的努力,已有若干种可移植的方法以确定这些幻数和具体实现定义的限制。这非常有助于改善UNIX环境下软件的可移植性。
2、以下两种类型的限制是必须的:
(1)编译时限制(如,短整型的最大值是什么?)
(2)运行时限制(如,头文件有多少个字符)
编译时限制可在头文件中定义。程序在编译时可以包含这些头文件
运行时限制要求进程调用一个函数获得限制值。
3、为了解决UNIX多文件系统中不同文件系统中不同文件长度的限制,UNIX提供了以下3种限制:
(1)编译时限制(头文件)
(2)与文件或目录无关的运行时限制(sysconf函数)
(3)与文件或目录有关的运行时限制(pathconf函数和fpathconf函数)
4、ISO C定义的所有编译时限制都列在头文件
函数sysconf、pathconf和fpathconf
1、函数原型
#include <unistd.h>
long sysconf(int name);
long pathconf(const char *pathname,int name);
long fpathconf(int fd,int name);
功能测试宏
1、由于UNIX不同版本有不同的实现,为了保证只使用POSIX.1标准,在头文件中定义了
_POSIX_SOURCE
和_XOPEN_SOURCE
功能测试宏
基本数据类型
1、在头文件<sys/types.h>
中定义了某些与实现有关的数据类型,它们用C的typedef来定义,大多数以_t结尾,被成为集本数据类型。