C/C++头文件

本文详细介绍了C/C++语言的ISO标准和POSIX标准,并列举了C语言的24个标准头文件及其功能,如assert.h、ctype.h、math.h等。同时,列举了C++的54个头文件,包括algorithm、iostream、string等,强调了C++头文件在类库中的使用。建议开发者在项目中优先使用C++的头文件以保证代码的规范性和可维护性。
摘要由CSDN通过智能技术生成

C/C++语言标准

c/c++语言头文件列表
包括:ISO标准,POSIX标准
补充:每个头文件的基础功能


前言

C/C++是构建于汇编语言之上的应用广泛的编程语言,其中C++是在C语言基础上,由贝尔实验室Eijarne Stroustrup开发的面向对象(更符合人思维习惯的)通用的应用程序设计语言。


以下内容来源于网络资源搜索整理,如有侵权,请联系删除

一、C/C++的标准

此处涉及的标准是两种:ISO标准和POSIX标准。

ISO(International Organization for Standardization)是国际标准化组织。
C语言的版本有如下(部分):
C90(ISO/IEC):
C99(ISO/IEC):
C11(ISO/IEC):
C18(ISO/IEC):
备注:GCC支持的版本:有C89,C90,C99,C9X,
C11,C17,C18,C1X,C2X。
C++语言的版本有如下(部分):
C++98(ISO/IEC):
C++03(ISO/IEC):
C++11(ISO/IEC):
C++14(ISO/IEC):
C++17(ISO/IEC):
C++20(ISO/IEC):

POSIX(Portable Operating System Interface)标准是操作系统可移植接口,详细介绍见
POSIX标准总体分析(https://blog.csdn.net/novagx/article/details/2077561)

二、头文件介绍

1.C语言

总共24个头文件(ISO标准):

#include <assert.h>  //  验证程序断言
#include <complex.h>  //支持复数算术运算
#include <ctype.h>  //字符类型
#include <errno.h>  //出错码
#include <fenv.h>  //浮点环境
#include <float.h>  //浮点常量
#include <inttypes.h>  //整形格式转换
#include <iso646.h>  //替代关系操作符宏
#include <limits.h>  //实现常量
#include <locale.h>  //局部类别
#include <math.h>  //数据常量
#include <setjmp.h>  //非局部 goto
#include <signal.h>  //信号
#include <stdarg.h>  //可变参数表
#include <stdbool.h>  //布尔类型和值
#include <stddef.h>  //标准定义
#include <stdint.h>  //整形
#include <stdio.h>  //标准I/O库
#include <stdlib.h>  //使用程序库函数
#include <string.h>  //字符串操作
#include <tgmath.h>  //通用类型数学宏
#include <time.h>  //时间和日期
#include <wchar.h>  //宽字符支持
#include <wctype.h>  //宽字符分类和映射支持

01 <assert.h>
该头文件的只要目的就是提供一个assert的宏定义,assert只是对所给表达式求值,就像if判断语句中一样,然后如果该值为真则正常运行,否则包错,并调用abort(),产生异常中断,exit出来。该宏可以屏蔽掉,只需在包含assert.h之前#define NDEBUG, 想开再#undef。从这里可以看出预处理带来的方便

02 <complex.h>
complex.h是C标准函数库中的头文件,提供了复数算术所需要的宏定义与函数声明。

03 <ctype.h>
字符处理函数:本类别函数用于对单个字符进行处理,包括字符的类别测试和字符的大小写转换
###############
字符测试是否字母和数字 isalnum
是否字母 isalpha
是否控制字符 iscntrl
是否数字 isdigit
是否可显示字符(除空格外) isgraph
是否可显示字符(包括空格) isprint
是否既不是空格,又不是字母和数字的可显示字符 ispunct
是否空格 isspace
是否大写字母 isupper
是否16进制数字(0-9 A-F)字符 isxdigit
字符大小写转换函数 转换成大写字母 toupper
转换为小写字母 tolower
######################

04 <errno.h>
errno宏定义为一个int型态的左值, 包含任何函式使用errno功能所产生的上一个错误码。
一些表示错误码,定义为整数值的宏:
EDOM 源自于函式的参数超出范围,例如sqrt(-1)
ERANGE 源自于函式的结果超出范围,例如strtol(“0xfffffffff”,NULL,0)
EILSEQ 源自于不合法的字符顺序,例如wcstombs(str, L"\xffff", 2)
查看错误代码errno是调试程序的一个重要方法。当linux C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因。在实际编程中用这一招解决了不少原本看来莫名其妙的问题。比较 麻烦的是每次都要去linux源代码里面查找错误代码的含义,现在把它贴出来,以后需要查时就来这里看了。

05 <fenv.h>
这个头文件声明了一系列的函数和宏去访问浮点环境,以及特殊的类型.
浮点环境维护一系列的状态标志(status flags)和具体的控制模式. 具体浮点环境的内容依赖于其实现 , 但是状态标志通常包括浮点异常和它们的相关信息,并且控制模式至少包含了舍入方向;
########
关于浮点数异常
feclearexcept()    清除浮点异常
feraiseexcept()    提高浮点异常
fegetexceptflag()   获得浮点异常标志
fesetexceptflag()   设置浮点异常标志
关于舍入方向
fegetround()     获得舍入方向模式
fesetround()     设置舍入方向模式
关于整体环境
fegetenv()      获得浮点环境
fesetenv()      设置浮点环境
feholdexcept()    保存浮点异常
feupdateenv()    更新异常环境
关于其它
fetestexcept()    测试浮点异常
类型
fenv_t   浮点环境类型
fexcept_t  浮点异常类型
常量宏
浮点异常
FE_DIVBYZERO   溢出错误异常
FE_INEXACT   结果精度异常
FE_INVALID   无效参数异常
FE_OVERFLOW   上界溢出
FE_UNDERFLOW  下界溢出
FE_ALL_EXCEPT  全部异常
舍入方向
FE_DOWNWARD    向下舍入
FE_TONEAREST     四舍五入
FE_TOWARDZERO   向零舍入
FE_UPWARD       向上舍入
整体环境
FE_DFL_ENV       默认环境
编译设置
FENV_ACCESS      访问浮点环境 //注:(on/off)
#############################################

06 <float.h>
C语言标准库头文件,提供了浮点型的范围和精度的宏,一般用于数值分析。 float.h包含了一组与浮点值相关的依赖于平台的常量。
########
宏定义:
double
float
long double
##########

07 <inttypes.h>
inttypes.h是标准C函数库的头文件,提供整数输入的各种转换宏
举个例子:PRIi8、PRIu8、PRIo8以及PRIx8,其中i为有符号,u为无符号,o为8进制以及x为16进制。
printf(“a=%“PRIu64”\n”, a);

08 <iso646.h>
该文件提供了一组宏来帮助非QWERTY键盘的国家或地区使用C语言的逻辑运算符,定义了一批C语言常见运算符的可选拼写。iso646.h是作为C90标准的修正案于1995年增补的。
########
宏 定义
and &&
and_eq &=
bitand &
bitor |
compl ~
not !
not_eq !=
or ||
or_eq |=
xor ^
xor_eq ^=
################

09 <limits.h>
limits.h专门用于检测整型数据数据类型的表达值范围。

10 <locale.h>
地区化:被类别的函数用于处理不同国家的语言差异。
#########
地区控制 地区设置 setlocale
数字格式约定查询 国家的货币 、日期 、 时间等的格式转换 localeconv
#########################################################

11 <math.h>
数学函数:本分类给出了各种数据计算函数,必须提醒的是ANSI
C标准中的数据格式并不符合IEEE754标准,一些C语言编译器却遵循IEEE754
#########
反余弦 acos
反正弦 asin
反正切 atan
反正切2 atan2
余弦 cos
正选 sin
正切 tan
双曲余弦 cosh
双曲正弦 sinh
双曲正切 tanh
指数函数 exp
指数分解函数 frexp
乘积指数函数 fdexp
自然对数 log
以10为底的对数 log10
浮点数分解函数 modf
幂函数 pow
平方根函数 sqrt
求下限接近整数 ceil
绝对值 fabs
求上限接近整数 floor
求余数 fmod
################

12 <setjmp.h>
本分类函数用于实现在不同底函数之间直接跳转代码
########
保存调用环境 setjmp
恢复调用环境 longjmp
###################

13 <signal.h>
信号处理:该分类函数用于处理那些在程序执行过程中发生例外的情况。
########
指定信号处理函数 signal
发送信号 raise
#############

14 <stdarg.h>
可变参数处理:本类函数用于实现诸如printf,scanf等参数数量可变底层函数。
########
可变参数数访问宏
可变参数开始宏 va_start
可变参数结束宏 va_end
可变参数访问宏 访问下一个可变参数宏 va_arg
###################################

15 <stdbool.h>
它定义了一个布尔类型
########
宏名称 展开
bool _Bool
true 整数常量1
false 整数常量0
__bool_true_false_are_defined 整数常量1
######################################

16 <stddef.h>
定义了一些标准宏以及类型.

NULL Null 指针常量
offsetof(type, member-designator) 获得字段在结构体中的偏移量

ptrdiff_t 带符号的整数类型, 用来表示指针相减的结果类型
wchar_t 宽字符类型
size_t 无符号整数类型, 用来表示sizeof操作符的结果类型
###############################################

17 <stdint.h>
1、整数类型被用于声明已知大小的整数,或显示特定特征的整数:
intN_t, int_leastN_t, int_fastN_t:表示长度为N位的整型数;
uintN_t, uint_leastN_t, uint_fastN_t表示长度为N位的无符号整型数 ;
2、stdint.h中的常量,定义以上各类型数的最大最小值(其中N可以为8,16,32,64)
INTN_MIN, UINTN_MIN, INTN_MAX, UINTN_MAX ;
INT_LEASEN_MIN, INT_LEASEN_MAX ;
INT_FASTN_MIN, INT_FASTN_MAX ;
以上类型的C++类型定义等。
###########################################################

18 <stdio.h>
输入输出函数:该分类用于处理包括文件、控制台等各种输入输出设备, 各种函数以“流”的方式实现
########
删除文件 remove
修改文件名称 rename
生成临时文件名称 tmpfile
得到临时文件路径 tmpnam
文件访问 关闭文件 fclose
刷新缓冲区 fflush
打开文件 fopen
将已存在的流指针和新文件连接 freopen
设置磁盘缓冲区 setbuf
设置磁盘缓冲区 setvbuf
格式化输入与输出函数
格式输出 fprintf
格式输入 fscanf
格式输出(控制台) printf
格式输入(控制台) scanf
格式输出到缓冲区 sprintf
从缓冲区中按格式输入 sscanf
格式化输出 vfprintf
格式化输出 vprintf
格式化输出 vsprintf

字符输入输出函数
输入一个字符 fgetc
字符串输入 fgets
字符输出 fputc
字符串输出 fputs
字符输入(控制台) getc
字符输入(控制台) getchar
字符串输入(控制台) gets
字符输出(控制台) putc
字符输出(控制台) putchar
字符串输出(控制台) puts
字符输出到流的头部 ungetc
直接输入输出
直接流读操作 fread
直接流写操作 fwrite
文件定位函数
得到文件位置 fgetpos
文件位置移动 fseek
文件位置设置 fsetpos
得到文件位置 ftell
文件位置复零位 remind
错误处理函数
错误清除 clearerr
文件结尾判断 feof
文件错位检测 ferror
得到错误提示字符串 perror
########################

19 <stdlib.h>
实用工具函数:本分类给出了一些函数无法按以上分类,但又是编程所必须要的
#########
字符串转换函数
字符串转换为整数 atoi
字符串转换为长整数 atol
字符串转换为浮点数 strtod
字符串转换为长整数 strtol
字符串转换为无符号长整型 strtoul
伪随机序列产生函数
产生随机数 rand
设置随机函数的启动数值 srand
存储管理函数
分配存储器 calloc
释放存储器 free
存储器分配 malloc
重新分配存储器 realloc
环境通信
中止程序 abort
退出程序执行,并清除环境变量 atexit
退出程序执行 exit
读取环境参数 getenv
程序挂起,临时执行一个其他程序 system
搜索和排序工具 二分查找(数据必须已排序) bsearch
快速排序 qsort
整数运算函数 求决定值 abs
得到除法运算底商和余数 div
求长整形底绝对值 labs
求长整形除法的商和余数 ldiv
多字节字符函数 得到多字节字符的字节数 mblen
得到多字节字符的字符数 mbtowc
多字节字符串转换 wctomb
多字节字符的字符串操作 将多字节串转换为整数数组 mbstowcs
将多字节串转换为字符数组 mcstowbs
##################################

20 <string.h>
字符串处理:本分类的函数用于对字符串进行合并、比较等操作
########
字符串拷贝 快拷贝(目的和源储存区不可重叠) memcpy
块拷贝(目的和源储存区可重叠) memmove
串拷贝 strcpy
按长度的串拷贝 strncpy
字符串连接函数 串连接 strcat
按长度连接字符串 strncat
串比较函数 块比较 memcmp
字符串比较 strcmp
字符串比较(用于非英文字符) strcoll
按长度对字符串比较 strncmp
字符串转换 strxfrm
字符与字符串查找 字符查找 memchr
字符查找 strchr
字符串查找 strcspn
字符串查找 strpbrk
字符串查找 strspn
字符串查找 strtok
字符串查找 strstr
杂类函数 字符串设置 memset
错误字符串映射 strerror
求字符串长度 strlen
###########################

21 <tgmath.h>
使用这些宏调用数学函数时,会根据参数自动对应到类型适合的数学函数,其效果类似于C++的函数重载,使得编程者不必繁琐地去调用数学库函数的单精度、双精度、长双精度、单精度复数、双精度复数、长双精度复数等各个版本。

22 <time.h>
日期和时间函数:本类被给出时间和日期处理函数
########
时间操作函数得到处理器时间 clock
得到时间差 difftime
设置时间 mktime
得到时间 time
时间转换函数 得到以ASCII码表示的时间 asctime
得到字符串表示的时间 ctime
得到指定格式的时间 strftime
###########################

23 <wchar.h>
24 <wctype.h>

2.C++

C++的ISO标准的头文件(54):

#include <algorithm>
#include <bitset>
#include <cassert>
#include <cctype>
#include <cerrno>
#include <cfloat>
#include <ciso646>
#include <climits>
#include <clocale>
#include <cmath>
#include <complex>
#include <csetjmp>
#include <csingal>
#include <cstdarg>
#include <cstddef>
#include <cstdio>
#include <cstring>
#include <ctime>
#include <cwchar>
#include <cwctype>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <locale>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <strstream>
#include <typeinfo>
#include <utility>
#include <valarray>
#include <vector>
#include <hash_map>
#include <hash_set>
#include <slist>

C++比较与C,吸纳了C语言18个头文件(其中一个名字没有变化complex.h,其他的在原头文件前加上c),剩余六个没有包含(fenv.h inttypesh stdbool.h stdint.h stdlib.h tgmath.h)。
C++头文件介绍:
01 /algorithm/
02 /bitset/
03到21
/cassert/ /cctype/ /cerrno/ /cfloat/ /ciso646/ /climits/ /clocale/ /cmath/ /complex/ /csetjmp/ /csingnal/ /cstdarg/ /cstddef/ /cstdio/ /cstdlib/ /cstring/ /ctime/ /cwchar/ /cwctype/
说明见C语言

22 /deque/

23 /exception/
24 /fstream/
25 /functional/
26 /iomanip/
27 /ios/
28 /iosfwd/
29 /iostream/
30 /istream/
31 /iterator/
32 /limits/
33 /list/
34 /locale/
35 /map/
36 /memory/
37 /new/
38 /numeric/
39 /ostream/
40 /queue/
41 /set/
42 /sstream/
43 /stack/
44 /stdexcept/
45 /streambuf/
46 /string/
47 /strstream/
48 /typeinfo/
49 /utility/
50 /valarray/
51 /vector/
52 /hash_map/
53 /hash_set/
54 /slist/


总结

C/C++头文件的列表和理解是长期的过程:
在后期的开发项目中应该,尽量使用C++的头文件和类。因为二者有包含关系,而且尽量规范化,以便程序的后期维护和升级扩展。


学习内容:

C/C++的头文件使用
1、 在C++的类库中使用C的函数
2、 熟练使用C++的模板类函数
3、 熟练掌握字符处理和字符转换函数
4、 多熟悉几个扩展性好的编写框架


学习时间:

每天抽出2个小时左右的时间

1、 周一至周五晚上 7 点—晚上9点
2、 周六上午 9 点-上午 11 点
3、 周日下午 3 点-下午 6 点


学习产出:

计划产出
1、 技术笔记 2 遍
2、CSDN 技术博客 3 篇
3、 学习的 vlog 视频 1 个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值