C/C++编程常引用到的头文件
1.POSIX标准
POSIX表示可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称,其正式称呼为IEEE 1003,而国际标准名称为ISO/IEC 9945。
POSIX标准目的是提高软件可移植性。通俗地说,即是一个POSIX兼容的操作系统编写的程序,应该可以在任何其它的POSIX操作系统上编译执行,即使是来自不同的操作系统厂商。如常用的桌面系统Windows、Linux等,及其他符合POSIX标准的系统或者库,如RT-Thread(RTOS)实时系统、Qt库,或者我们程序员编写的符合POSIX的C/C++程序库。因此,基于POSIX标准开发,非常便于程序的移植,常用POSIX头文件如下。
#include <dirent.h> //目录项
#include <fcntl.h> //文件控制
#include <fnmatch.h> //文件名匹配类型
#include <glob.h> //路径名模式匹配类型
#include <grp.h> //组文件
#include <netdb.h> //网络数据库操作
#include <pwd.h> //口令文件
#include <regex.h> //正则表达式
#include <tar.h> //TAR归档值
#include <termios.h> //终端I/O
#include <unistd.h> //符号常量
#include <utime.h> //文件时间
#include <wordexp.h> //字符扩展类型
-------------------------
#include <arpa/inet.h> //INTERNET定义
#include <net/if.h> //套接字本地接口
#include <netinet/in.h> //INTERNET地址族
#include <netinet/tcp.h> //传输控制协议定义
-------------------------
#include <sys/mman.h> //内存管理声明
#include <sys/select.h> //Select函数
#include <sys/socket.h> //套接字借口
#include <sys/stat.h> //文件状态
#include <sys/times.h> //进程时间
#include <sys/types.h> //基本系统数据类型
#include <sys/un.h> //UNIX域套接字定义
#include <sys/utsname.h> //系统名
#include <sys/wait.h> //进程控制
-------------------------
//POSIX定义的XSI扩展头文件
#include <cpio.h> //cpio归档值
#include <dlfcn.h> //动态链接
#include <fmtmsg.h> //消息显示结构
#include <ftw.h> //文件树漫游
#include <iconv.h> //代码集转换使用程序,如GB2312、UTF-8
#include <langinfo.h> //语言信息常量
#include <libgen.h> //模式匹配函数定义
#include <monetary.h> //货币类型
#include <ndbm.h> //数据库操作
#include <nl_types.h> //消息类别
#include <poll.h> //轮询函数
#include <search.h> //搜索表
#include <strings.h> //字符串操作
#include <syslog.h> //系统出错日志记录
#include <ucontext.h> //用户上下文
#include <ulimit.h> //用户限制
#include <utmpx.h> //用户帐户数据库
-----------------------
#include <sys/ipc.h> //IPC(命名管道)
#include <sys/msg.h> //消息队列
#include <sys/resource.h> //资源操作
#include <sys/sem.h> //信号量
#include <sys/shm.h> //共享存储
#include <sys/statvfs.h> //文件系统信息
#include <sys/time.h> //时间类型
#include <sys/timeb.h> //附加的日期和时间定义
#include <sys/uio.h> //矢量I/O操作
-----------------------
//POSIX定义的可选头文件
#include <aio.h> //异步I/O
#include <mqueue.h> //消息队列
#include <pthread.h> //线程
#include <sched.h> //执行调度
#include <semaphore.h> //信号量
#include <spawn.h> //实时spawn接口
#include <stropts.h> //XSI STREAMS接口
#include <trace.h> //事件跟踪
2.C标准(C99、C11)
C标准,即ANSI C,是美国国家标准协会(ANSI)对C语言发布的标准。使用C语言开发时应该遵循ANSI C文档的要求,以便该C语言代码具有良好的跨平台特性。ANSI C支持众多编译器,C语言作为高级语言的鼻祖,应用于计算机各行业中。C标准经历了C89、C90、C99、C11的几个完善过程,目前最新的标准是C11。
#include <assert.h> //设定插入点,提供断言,assert(表达式)。
#include <ctype.h> //字符处理
#include <errno.h> //定义错误码
#include <float.h> //浮点数处理
#include <iso646.h> //对应各种运算符的宏
#include <limits.h> //定义各种数据类型最值的常量
#include <locale.h> //定义本地化C函数
#include <math.h> //定义数学函数
#include <setjmp.h> //异常处理支持
#include <signal.h> //信号机制支持
#include <stdarg.h> //不定参数列表支持
#include <stddef.h> //常用常量
#include <stdio.h> //标准输入/输出函数
#include <stdlib.h> //定义杂项函数及内存分配函数
#include <string.h> //字符串处理
#include <time.h> //定义关于时间的函数
#include <wchar.h> //宽字符处理及输入/输出
#include <wctype.h> //宽字符分类
#include <stdint.h> //定义了几种扩展的整数类型和宏
3.C++标准(C++ 11及以上)
C++作为C语言的衍生语言,几乎包括了C语言的全部特性,同时拥有自己与C语言本质的区别及的特有优势(面向对象与向过程)。C++作为面向对象语言,具有极高的效率,一般应用在游戏、图像处理、视频流媒体等,同时在一些情况下,有些人建议少用C++的STL(Standard Template Library)库,效率问题?一般情况下,使用标准库,会大大提高开发效率,非特别严格的情况执行效率几乎可以忽略。对于Qt(C++)开发,Qt本身有自己一套封装库,与STL库功能类似,开发Qt程序可以不用STL库,直接使用Qt本身的封装库,函数接口上命名上基本一致,使用起来也容易快速上手。C++标准也经历了C++ 98、C++ 03、C++ 11、C++14、C++ 17,常规C++程序开发,使用到的是C++03标准,从C++ 11开始,增加许多新特性,这方面还需要在实际项目中体验。C++ 17也即将发布。
//传统C++(C++ 03以前)
#include <fstream.h> //改用<fstream>
#include <iomanip.h> //改用<iomainip>
#include <iostream.h> //改用<iostream>
#include <strstrea.h> //该类不再支持,改用<sstream>中的stringstream
//标准C++(C++ 03、C++ 11至后面标准)
#include <algorithm> //STL 通用算法
#include <bitset> //STL 位集容器
#include <cctype> //字符处理
#include <cerrno> //定义错误码
#include <cfloat> //浮点数处理
#include <ciso646> //对应各种运算符的宏
#include <climits> //定义各种数据类型最值的常量
#include <clocale> //定义本地化函数
#include <cmath> //定义数学函数
#include <complex> //复数类
#include <csignal> //信号机制支持
#include <csetjmp> //异常处理支持
#include <cstdarg> //不定参数列表支持
#include <cstddef> //常用常量
#include <cstdio> //定义输入/输出函数
#include <cstdlib> //定义杂项函数及内存分配函数
#include <cstring> //字符串处理
#include <ctime> //定义关于时间的函数
#include <cwchar> //宽字符处理及输入/输出
#include <cwctype> //宽字符分类
#include <deque> //STL 双端队列容器
#include <exception> //异常处理类
#include <fstream> //文件输入/输出
#include <functional> //STL 定义运算函数(代替运算符)
#include <limits> //定义各种数据类型最值常量
#include <list> //STL 线性列表容器
#include <locale> //本地化特定信息
#include <map> //STL 映射容器
#include <memory> //STL通过分配器进行的内存分配
#include <new> //动态内存分配
#include <numeric> //STL常用的数字操作
#include <iomanip> //参数化输入/输出
#include <ios> //基本输入/输出支持
#include <iosfwd> //输入/输出系统使用的前置声明
#include <iostream> //数据流输入/输出
#include <istream> //基本输入流
#include <iterator> //STL迭代器
#include <ostream> //基本输出流
#include <queue> //STL 队列容器
#include <set> //STL 集合容器
#include <sstream> //基于字符串的流
#include <stack> //STL 堆栈容器
#include <stdexcept> //标准异常类
#include <streambuf> //底层输入/输出支持
#include <string> //字符串类
#include <typeinfo> //运行期间类型信息
#include <utility> //STL 通用模板类
#include <valarray> //对包含值的数组的操作
#include <vector> //STL 动态数组容器
推荐阅读