3

我需要在网络模拟器 NS-3 的代码中使用像 unordered_map 这样的数据结构。它使用 waf builder 来编译源代码。我很困惑,我应该在哪里添加 -std=c++0x 以添加到编译器标志?我尝试使用以下方法将其附加到主 wscript 文件中的 CXXFlags:

module.env.append_value('CXXFLAGS', '-std=c++0x');

但我仍然收到此错误:

该文件需要对即将推出的 ISO C++ 标准 C++0x 的编译器和库支持。此支持目前是实验性的,必须使用 -std=c++0x 或 -std=gnu++0x 编译器选项启用。C/C++ 问题

我还应该向我的 waf 模块添加任何库吗?

PS:我的 GCC 版本是 4.4

更新:更新到 4.7 后出现此错误:

error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.

有没有办法告诉编译器使用 0x 而不是 11?

4

1 回答 1

9

这是解决方案:

首先将Ns-3的GCC升级到4.7会因为标准的变化而导致更多的错误,并不能解决问题。所以我把 gcc 和 g++ 改回 4.4.3。

但是为了摆脱这个错误(正如它所说),这个选项应该被添加到 CXXFLAGS 中:

-std=c++0x

要向 CXXFLAG 添加选项,您可以使用以下命令:

CXXFLAGS="-std=c++0x" ./waf configure

或者,如果您想向 waf 配置添加选项:

CXXFLAGS="-std=c++0x" ./waf -d debug --enable-examples --enable-tests configure
于 2012-08-09T21:55:52.957 回答