【发布时间】:2016-04-14 01:12:21
【问题描述】:
我在我的 C++ 应用程序中使用 hash_map。当我使用 4.1.2 版本构建应用程序时,构建成功。当我尝试使用 4.4.6 版构建应用程序时,它会抛出错误
/include/c++/4.4.6/backward/backward_warning.h:28:2: 错误:#warning 此文件至少包含一个已弃用或过时的标头 将来可能会被删除,恕不另行通知。请使用一个 具有等效功能的非弃用接口。为一个 替换头和接口列表,请查阅文件 后向警告.h。要禁用此警告,请使用 -Wno-deprecated。
根据我查看/usr/include/c++/4.4.6/backward/backward_warning.h 的建议并将hash_map 更改为unordered_map。
现在我收到以下错误,
/include/c++/4.4.6/c++0x_warning.h:31:2: error: #error 这个文件 需要对即将推出的 ISO C++ 的编译器和库支持 标准,C++0x。这种支持目前是实验性的,必须 使用 -std=c++0x 或 -std=gnu++0x 编译器选项启用。
我只能看到/usr/include/c++/4.4.6/c++0x_warning.h中的错误信息。
我对 C++ 还很陌生。有人可以帮我解决这个问题吗?
【问题讨论】:
-
能否请您撤消对“hash_map”到“unordered_map”的更改,然后在编译结构的末尾添加“-Wno-deprecated”(不带引号)。似乎某些软件包在 4.4.6 中已弃用
-
您可以使用 -std=c++0x 或 -std=gnu++0x 编译器选项启用 C++0x 支持吗? (请注意,C++0x 现在称为 C++11,因为它在 2011 年被标准化)。或者您可以使用 -Wno-deprecated 禁用第一个警告。或者您可以使用 5 岁以上的编译器版本。
-
您可以使用
std::tr1::unordered_map(#include <tr1/unordered_map>),而不是使用需要启用C++11的std::unordered_map -
@immibis - 我想在我的应用程序中使用 C++11。 1、C++11可以用4.4.6吗? 2. 我也使用 make 文件来构建应用程序。我用
-Wno-deprecated和CCFLAGS就像CCFLAGS += -Werror -Wno-deprecated一样。所以如果我想添加C++0x我该如何使用它。我对 C++ 相当陌生。你能帮我解决这个问题吗?