7

我想在标头随机中使用 default_random_engine 和 uniform_real_distribution 生成一些随机双数。

我使用 Eclipse for C/C++ & MinGW 来构建我的项目。

  • Eclipse 版本:4.2.1
  • Eclipse CDT C/C++ 开发工具版本:8.1.1.201209170703
  • Eclipse CDT GCC 交叉编译器支持版本:1.1.0.201209170703
  • MinGW 版本:4.6.2(使用“gcc -v”检查)

当我在编辑器中键入 std::default_random_engine 时,Eclipse 提示我“无法解析类型'std::default_random_engine'”。

我已经将我的项目配置为支持 C++11 功能

然后我写了一个列表初始化向量和一个范围来测试C++11的支持,代码工作正常。

    vector<int> ivec = {1, 2, 3};
    for (int i : ivec)
        cout << i << " ";
    cout << endl;

“std::default_random_engine”有什么问题,我应该怎么做才能解决这个问题?

4

1 回答 1

7

更新: 自从我发布原始答案以来已经很长时间了,它已经过时了。我今天(2014 年 3 月 15 日)仔细检查了:在 Eclipse Kepler(内部版本号 20130614-0229)中,足以

  • Project > Properties > C/C++ Build > Settings下添加,然后在Tool Settings选项卡 上添加GCC C++ Compiler > Miscellaneous-std=c++11标志,

  • 然后在Discovery选项卡上的Window > Preferences > C/C++ > Build > Settings下选择CDT GCC Built-in Compiler Settings并将标志添加到Command 以获取编译器规格。在我的机器上,更改后它看起来像这样: -std=c++11

    ${COMMAND} -E -P -v -dD -std=c++11 "${INPUTS}"

  • 清理并重建您的项目索引(Project > C/C++ Index > Rebuild),因为 Eclipse 倾向于缓存错误消息并显示它们,即使它们在更改设置后消失了。

这肯定适用于我的机器。如果它不在你的身上,那么你可能想试一试:C++11 full support on Eclipse虽然我不确定这种方法的正确性,也没有必要在我的机器上这样做。截至 2014 年 3 月 7 日,用户声称它对他们有帮助,而上述方法没有。


原来的帖子,现在已经过时了:

这似乎是来自 IDE 的错误错误。

单击项目属性,然后 C/C++ General > Code Analysis > Syntax and Semantic Errors 并取消选择Type cannot be resolved

我还必须在我自己的项目中禁用一堆其他语法和语义错误,例如无效参数、无效重载、符号未解析等。这些虚假错误来自Codan

(您可能必须添加__GXX_EXPERIMENTAL_CXX0X__到您的定义/预处理器宏中,但不确定这个。)

于 2012-10-29T08:45:13.143 回答