/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]
我找到了这个Wikipedia entry on the C standard library,它包含了C头文件的列表和关于它们是哪个标准的详细信息,这给了你一个很好的历史视角和一些其他类似的细节。 当然,这只是C。在“C标准库”下有一篇类似的文章。它还引用了一些其他库,这些库本身可能不是“标准”的,但如果没有这些库,一些习惯于使用扩展的人会觉得C“残废”。
4条答案
按热度按时间velaa5lx1#
标头“tree.h”在任何地方都不是标准的。
C标准
国际标准化组织/国际电工委员会9899:1990(C89、C90)
C89中的15个标准接头为:
国际标准化组织/国际电工委员会9899:1990/修正案1:1995
C94*(修订1)中引入的3个额外标题为:
国际标准化组织/国际电工委员会9899:1999(C99)
C99中的6个额外标头为:
国际标准化组织/国际电工委员会9899:2011(C11)
C2011中的5个额外标头(共29个)为:
国际标准化组织ISO/IEC 9899:2018(C17、C18)
无额外标头。
国际标准化组织ISO/IEC 9899:2023(C23)
C2023中的2个额外标头(共31个)为:
有些标头已过时,特别是:
ISO/IEC 9045:2008(POSIX 2008,单一Unix规范)
注意POSIX需要更多的头文件(82个,包括所有的C99头文件)。下面的列表重复了标准的C(C99)头文件。当然,Windows需要一组不同的头文件。
同样要注意的是,X/Open Curses需要另一组头文件,2009年11月发布了该规范的新版本(Release 7)(自1996年以来的第一次更新--主要区别在于不再支持termcap和标准前的C
<varargs.h>
头文件)。Linux标准库
你可能需要使用其他的头文件。例如,在这些列表中没有提到
<getopt.h>
,但是如果你使用GNU Getopt(例如,长选项),你将需要并使用该头文件。根据LSB, Linux Standards Base,它是Linux上的标准。LSB的旧版本被定义为ISO/IEC 23360:2006的多个部分;截至2014年9月21日,LSB的当前版本为4.1,但版本5.0仍在测试阶段。文档中有一节定义了包含哪些头文件,但在我查看的版本中没有方便的头文件表。它与POSIX非常一致,但具有超出POSIX定义的额外功能。C++标准
国际标准化组织/国际电工委员会14882:1998(C98)
该标准列出了32个C特有的头文件:
还有18个报头对应于来自C的报头(对应于C94):
有趣的是,附录D(§D.7)列出了一个废弃的头文件
<strstream>
,在标准前面没有提到,在GCC(g++
)7.2.0中包含这个头文件会产生一个警告:标头
<strstream>
在标准的其他版本中明确列出。国际标准化组织ISO/IEC 14882:2011(C11)
C11中的53个C++头文件是:
与C(C11)有关的26个标题是:
国际标准化组织ISO/IEC 14882:2014(C++14)
C14中的54个C头文件是:
与C(C11)相关的26个头文件与C++11相比没有变化:
与C11相比,C14列出了一个新的标头,即
<shared_mutex>
。<deque>
,<istream>
,<stdexcept>
,<unordered_set>
)两次。另外,草案中的表中没有列出来自C++11的5个头文件,即<exception>
,<iterator>
,<ratio>
,<scoped_allocator>
和<thread>
。由于§18.8定义了<exception>
,§24定义了<iterator>
,§20.11定义了<ratio>
,§30定义了<thread>
,§30.4定义了<shared_mutex>
,这是一个例子,说明了为什么你不应该相信标准草案是最终的决定--它们包含错误。国际标准化组织ISO/IEC 14882:2017(C++17)
有61个C++头文件:
与C14相比,新的头文件似乎是:一米20英寸一英寸、一米21英寸一英寸、一米22英寸一英寸、一米23英寸一英寸、一米24英寸一英寸、一米25英寸一英寸、一米26英寸一英寸。
同样,与C(C11)相关的26个头文件与C11和C++14相比没有变化:
另请参见What are the new features in C++17?
注意一些“C library”头文件在C17中是deprecated,特别是
<ccomplex>
,<cstdalign>
,<cstdbool>
,<ctgmath>
(而不是<ciso646>
)。C头文件<codecvt>
(在C11中添加的)在C17中也被弃用。**日期中的“相差一年”问题是由于标准被批准后处理标准所花费的时间。ANSI在1989中批准了原始的C标准;ISO于1990年批准,修正案1于1994年批准;它于1995年发行。
kqhtkvqz2#
请尝试:http://en.cppreference.com/w/
然而,你也可以引用你的操作系统的头文件,这些可以在MSDN(Windows)或
man
命令(POSIX系统)中找到,或者如果你在另一个操作系统上,也可以从另一个源文件中找到。camsedfj3#
http://www.cplusplus.com/reference/列出了所有标准C头文件和C头文件的C Package 器。
tree.h不是标准库的一部分。
t3psigkw4#
我找到了这个Wikipedia entry on the C standard library,它包含了C头文件的列表和关于它们是哪个标准的详细信息,这给了你一个很好的历史视角和一些其他类似的细节。
当然,这只是C。在“C标准库”下有一篇类似的文章。它还引用了一些其他库,这些库本身可能不是“标准”的,但如果没有这些库,一些习惯于使用扩展的人会觉得C“残废”。