C++ 不推荐使用的标题警告(C+;+;)

C++ 不推荐使用的标题警告(C+;+;),c++,header,deprecated,C++,Header,Deprecated,我一直收到不推荐使用的标题警告: #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>

我一直收到不推荐使用的标题警告:

#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
\ifdef\uu已弃用
#警告:此文件至少包含一个已弃用或过时的标头\
请考虑使用以下32节中的一个标题:
C++标准。示例包括将标题替换为\
C++的报头包括,或代替未标示的报头。
. 要禁用此警告,请使用-Wno弃用。
#恩迪夫
但是,我没有看到我的项目调用的任何不推荐的头(包括我的库调用的头)。这些是我正在加载的标题(或者至少是我看到的标题):
iostream
math.h
assert.h
fstream
vector
time.h

在第17.4.1.2节中,仅列出了应使用的标题

1) 有一张不推荐使用的列表吗

2) 你知道如何从预处理器中取出哪一个是他不喜欢的标题吗


干杯

来自C世界的标题将以
C
作为前缀,而不是后缀。
这意味着您需要包括
cmath
casert
ctime

在这些情况下,只有标题名会被弃用,而内容不会被弃用

注意:您可以通过匹配链接到的文档中的标题名称来推断哪些标题会受到这种不推荐的影响


显然,这只适用于标准标题。例如,
unistd.h
将始终是
unistd.h

为什么您使用而不是?@Nicol我使用的是gcc 4.2.1LLVM@PaulR,没有理由:)这就是我记忆中的那个……谢谢@RaphaelSP。我替换了你提到的标题。然而,我一直收到警告。“在链接到的文档中匹配他们的名字”是什么意思?你的意思是简单地“搜索那些名字”吗?@Enzo:好吧,我这句话的意思很复杂:)所以是的,查一下你的标题;要么它们没有出现在17.4.1.2的列表中,要么它们
不是标准的,要么它们以稍微不同的形式出现(例如,没有
.h`或带有
c
),然后您应该使用标准中提到的形式,因为您的格式确实是不正确的。不幸的是,我对GCC的了解还不够,无法判断是否有办法准确地知道哪些标头不推荐使用。但是,您可以使用
-M
列出所有包含的标头,并查看是否遗漏了其中一个标头。