C和C ++中的标准头文件列表
我在哪里可以findC和C ++中所有头文件的列表?
当我build立一个图书馆,我得到一个错误,如“ tree.h not found
”。 我想这是C和C ++中的标准头文件。 这引起了我对所有头文件及其贡献的好奇心。
有没有可以search的地方?
我正在Solaris Unix上工作。
试试这里: http : //en.cppreference.com/w/
但是,您也可能会引用您的操作系统的头文件。 这些可以在MSDN(Windows)或man
命令(POSIX系统)上find。 或者另一个来源,如果你在另一个操作系统。
头文件“tree.h”在任何地方都不是标准的。
C标准
ISO / IEC 9899:1990(C89,C90)
C89中的15个标准头文件是:
<assert.h> <limits.h> <signal.h> <stdlib.h> <ctype.h> <locale.h> <stdarg.h> <string.h> <errno.h> <math.h> <stddef.h> <time.h> <float.h> <setjmp.h> <stdio.h>
ISO / IEC 9899:1990 / Amd.1:1995
C94 * (修正1)引入的3个额外标题是:
<iso646.h> <wchar.h> <wctype.h>
ISO / IEC 9899:1999(C99)
C99中的6个额外的头文件是:
<complex.h> <inttypes.h> <stdint.h> <tgmath.h> <fenv.h> <stdbool.h>
ISO / IEC 9899:2011(C11)
C2011中的5个额外的标题(共29个)是:
<stdalign.h> <stdatomic.h> <stdnoreturn.h> <threads.h> <uchar.h>
ISO / IEC 9045:2008(POSIX 2008,Single Unix Specification)
请注意, POSIX需要更多的标题(82,包括所有的C99标题)。 下面的列表重复标准C(C99)标题。 当然,Windows需要一组不同的标题。
<aio.h> <libgen.h> <spawn.h> <sys/time.h> <arpa/inet.h> <limits.h> <stdarg.h> <sys/times.h> <assert.h> <locale.h> <stdbool.h> <sys/types.h> <complex.h> <math.h> <stddef.h> <sys/uio.h> <cpio.h> <monetary.h> <stdint.h> <sys/un.h> <ctype.h> <mqueue.h> <stdio.h> <sys/utsname.h> <dirent.h> <ndbm.h> <stdlib.h> <sys/wait.h> <dlfcn.h> <net/if.h> <string.h> <syslog.h> <errno.h> <netdb.h> <strings.h> <tar.h> <fcntl.h> <netinet/in.h> <stropts.h> <termios.h> <fenv.h> <netinet/tcp.h> <sys/ipc.h> <tgmath.h> <float.h> <nl_types.h> <sys/mman.h> <time.h> <fmtmsg.h> <poll.h> <sys/msg.h> <trace.h> <fnmatch.h> <pthread.h> <sys/resource.h> <ulimit.h> <ftw.h> <pwd.h> <sys/select.h> <unistd.h> <glob.h> <regex.h> <sys/sem.h> <utime.h> <grp.h> <sched.h> <sys/shm.h> <utmpx.h> <iconv.h> <search.h> <sys/socket.h> <wchar.h> <inttypes.h> <semaphore.h> <sys/stat.h> <wctype.h> <iso646.h> <setjmp.h> <sys/statvfs.h> <wordexp.h> <langinfo.h> <signal.h>
另请注意,X / Open Curses需要另一组标题。 2009年11月发布了该规范的新版本(Release 7)(自1996年以来的第一次更新 – 主要区别是官方支持termcap和pre-standard C <varargs.h>
头文件)。
<curses.h> <term.h> <uncntrl.h>
Linux标准库
还有其他的标题,你可能需要使用。 例如,在这些列表中没有提及<getopt.h>
,但是如果您使用的是GNU Getopt(例如对于长选项),则需要使用该标题。 根据LSB,Linux标准库,它是Linux上的标准 。 旧版本的LSB在多个部分被定义为ISO / IEC 23360:2006; 截至2014年9月21日,LSB的当前版本是4.1,但5.0版本正在testing中。 文档的一部分定义了哪些头文件包含在内,但在我看的版本中没有方便的头文件表。 它与POSIX紧密结合,但是具有超出POSIX定义的额外function。
C ++标准
ISO / IEC 14882:1998(C ++ 98)
标准列出了特定于C ++的32个头文件:
<algorithm> <iomanip> <list> <ostream> <streambuf> <bitset> <ios> <locale> <queue> <string> <complex> <iosfwd> <map> <set> <typeinfo> <deque> <iostream> <memory> <sstream> <utility> <exception> <istream> <new> <stack> <valarray> <fstream> <iterator> <numeric> <stdexcept> <vector> <functional> <limits>
还有18个标题对应于来自C的标题(对应于C94):
<cassert> <ciso646> <csetjmp> <cstdio> <ctime> <cctype> <climits> <csignal> <cstdlib> <cwchar> <cerrno> <clocale> <cstdarg> <cstring> <cwctype> <cfloat> <cmath> <cstddef>
有趣的是,附录D(§D.7)列出了标准中没有提到的不赞成使用的标头<strstream>
。 用GCC( g++
)7.2.0包含这个头文件会产生一个警告:
/opt/gcc/v7.2.0/include/c++/7.2.0/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header which may be removed without further notice at a future date. Please use a non-deprecated interface with equivalent functionality instead. For a listing of replacement headers and interfaces, consult the file backward_warning.h. To disable this warning use -Wno-deprecated. [-Wcpp]
标题<strstream>
明确列在其他版本的标准中。
ISO / IEC 14882:2011(C ++ 11)
C ++ 11中的53个C ++头文件是:
<algorithm> <initializer_list> <numeric> <system_error> <array> <iomanip> <ostream> <thread> <atomic> <ios> <queue> <tuple> <bitset> <iosfwd> <random> <type_traits> <chrono> <iostream> <ratio> <typeindex> <codecvt> <istream> <regex> <typeinfo> <complex> <iterator> <scoped_allocator> <unordered_map> <condition_variable> <limits> <set> <unordered_set> <deque> <list> <sstream> <utility> <exception> <locale> <stack> <valarray> <forward_list> <map> <stdexcept> <vector> <fstream> <memory> <streambuf> <functional> <mutex> <string> <future> <new> <strstream>
与C(C11)相关的26个头文件是:
<cassert> <cinttypes> <csignal> <cstdio> <cwchar> <ccomplex> <ciso646> <cstdalign> <cstdlib> <cwctype> <cctype> <climits> <cstdarg> <cstring> <cerrno> <clocale> <cstdbool> <ctgmath> <cfenv> <cmath> <cstddef> <ctime> <cfloat> <csetjmp> <cstdint> <cuchar>
ISO / IEC 14882:2014(C ++ 14)
在ISO / IEC JTC1 / SC22 / WG21网站上发布的基于标准草案N3797的标题暂定清单。 数据来自第17.6.1.2节中的表14和15,如下所述。 由于该标准尚未公布(截至2014年9月21日),这个名单尚未确定。
C ++ 14中的54个C ++头文件是:
<algorithm> <initializer_list> <numeric> <strstream> <array> <iomanip> <ostream> <system_error> <atomic> <ios> <queue> <thread> <bitset> <iosfwd> <random> <tuple> <chrono> <iostream> <ratio> <type_traits> <codecvt> <istream> <regex> <typeindex> <complex> <iterator> <scoped_allocator> <typeinfo> <condition_variable> <limits> <set> <unordered_map> <deque> <list> <shared_mutex> <unordered_set> <exception> <locale> <sstream> <utility> <forward_list> <map> <stack> <valarray> <fstream> <memory> <stdexcept> <vector> <functional> <mutex> <streambuf> <future> <new> <string>
与C(C11)相关的26个头文件与C ++ 11相比没有变化:
<cassert> <cinttypes> <csignal> <cstdio> <cwchar> <ccomplex> <ciso646> <cstdalign> <cstdlib> <cwctype> <cctype> <climits> <cstdarg> <cstring> <cerrno> <clocale> <cstdbool> <ctgmath> <cfenv> <cmath> <cstddef> <ctime> <cfloat> <csetjmp> <cstdint> <cuchar>
与C ++ 11相比,C ++ 14列出了一个新的头文件,即<shared_mutex>
。
注意:草稿列出了两个标头( <deque>
, <istream>
, <stdexcept>
, <unordered_set>
)的<stdexcept>
。 此外,草稿中的表格(即<exception>
, <iterator>
, <ratio>
, <scoped_allocator>
和<thread>
中没有列出5个来自C ++ 11的头文件。 由于§18.8定义了<exception>
,§24定义了<iterator>
,§20.11定义了<ratio>
,§30定义了<thread>
,§30.4定义了<shared_mutex>
,这就是为什么你不应该相信草案标准作为最后一个字 – 它们包含错误。
ISO / IEC 14882:2017(C ++ 17)
基于N4659草案date2017-03-21的C ++ 17中的标题暂定列表。 这是来自第20.5.1.2节标题的表16和17的转录。 这不是最终的标准; 从理论上讲,事情可能会改变。
有61个C ++头文件:
<algorithm> <future> <numeric> <strstream> <any> <initializer_list> <optional> <system_error> <array> <iomanip> <ostream> <thread> <atomic> <ios> <queue> <tuple> <bitset> <iosfwd> <random> <type_traits> <chrono> <iostream> <ratio> <typeindex> <codecvt> <istream> <regex> <typeinfo> <complex> <iterator> <scoped_allocator> <unordered_map> <condition_variable> <limits> <set> <unordered_set> <deque> <list> <shared_mutex> <utility> <exception> <locale> <sstream> <valarray> <execution> <map> <stack> <variant> <filesystem> <memory> <stdexcept> <vector> <forward_list> <memory_resource> <streambuf> <fstream> <mutex> <string> <functional> <new> <string_view>
与C ++ 14相比,新的头文件似乎是: <any>
, <execution>
, <filesystem>
, <memory_resource>
, <optional>
, <string_view>
, <variant>
。
与C(C11)相关的26个头文件与C ++ 11和C ++ 14相比仍然保持不变:
<cassert> <cinttypes> <csignal> <cstdio> <cwchar> <ccomplex> <ciso646> <cstdalign> <cstdlib> <cwctype> <cctype> <climits> <cstdarg> <cstring> <cerrno> <clocale> <cstdbool> <ctgmath> <cfenv> <cmath> <cstddef> <ctime> <cfloat> <csetjmp> <cstdint> <cuchar>
另请参见C ++ 17中的新function是什么?
请注意,某些“C库”标头在C ++ 17中已弃用 ,特别是<ccomplex>
, <cstdalign>
, <cstdbool>
, <ctgmath>
(而不是<ciso646>
)。 C ++头文件<codecvt>
(在C ++ 11中添加)也在C ++ 17中被弃用。
*date中 的“closures一年”问题是由于批准后处理标准所需的时间。 1989年 ANSI批准了原始C标准; 国际标准化组织于1990年批准。1994年批准了修正案1; 它于1995年发布。
http://www.cplusplus.com/reference/列出了C头文件的所有标准C ++头文件和C ++包装文件。
tree.h不是标准库的一部分。
我在C标准库中find了这个维基百科条目,其中包含C头文件列表以及它们属于哪个标准的详细信息。 这给你一个很好的历史观点和一些其他类似的细节。
当然这只是C.在“C ++标准库”下面还有类似的文章。 这也涉及到一些其他的图书馆本身可能不是“标准”的,但没有这些图书馆会觉得一些人习惯于使用扩展。