【问题标题】:How to include hash_map in C++ 4.4.6?如何在 C++ 4.4.6 中包含 hash_map?
【发布时间】: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-deprecatedCCFLAGS 就像 CCFLAGS += -Werror -Wno-deprecated 一样。所以如果我想添加C++0x 我该如何使用它。我对 C++ 相当陌生。你能帮我解决这个问题吗?

标签: c++ hashmap gcc4.4


【解决方案1】:

假设您使用的是 GCC (g++),请尝试将 -std=c++0x 添加到您的命令行中,因为消息显示让编译器使用 C++11。

【讨论】:

  • 谢谢。如何在 Makefile 中使用-std=c++0x
  • 我尝试CXXFLAGS += -std=c++0x 并从CCFLAGS += -Werror -Wno-deprecated 中删除了-Wno-deprecated。我的意思是我使用了 CCFLAGS += -Werror CXXFLAGS += -std=c++0x 之类的东西,但它没有用。
猜你喜欢
  • 1970-01-01
  • 2012-01-28
  • 2012-07-01
  • 2023-04-07
  • 2019-07-11
  • 2013-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多