我一直收到已弃用的标题警告:
#ifdef __DEPRECATED
#warning This file includes at least one deprecated or antiquated header. \
Please consider using one of the 32 headers found in section 17.4.1.2 of the \
C++ standard. Examples include substituting the <X> header for the <X.h> \
header for C++ includes, or <iostream> instead of the deprecated header \
<iostream.h>. To disable this warning use -Wno-deprecated.
#endif
但是,我没有看到我的项目调用的任何已弃用的标头(包括我的库调用的标头)。这些是我正在加载的标题(或者,至少是我看到的标题):iostream
math.h
assert.h
fstream
vector
time.h
。
在第17.4.1.2节http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1905.pdf中,只有一个应该使用的标题列表。
1)是否存在已弃用的列表?
2)有关如何退出预处理器的想法哪一个是他不喜欢的精确标题?
干杯!
答案 0 :(得分:5)
来自C世界的标题将以c
为前缀,而不是后缀。
这意味着您需要加入cmath
,cassert
和ctime
。
在这些情况下,只有标题名称可以弃用,而不是内容。
注意:您可以通过匹配您链接到的文档中的名称来推断哪些标题会受到此类弃用的影响。
显然,这仅适用于标准标题。例如,unistd.h
始终为unistd.h
。