为什么Netbeans不会识别`cbegin()`,`cend()`,`unordered_set`以及其他C ++特性?

时间:2013-02-03 18:34:41

标签: c++ netbeans c++11

我的C ++应用程序在Netbeans中按预期编译和运行。但是,代码帮助无法识别cbegin()cend()unordered_set等字词,如红色下划线所示:

enter image description here

然而,代码帮助确实识别end()。无济于事,我试过去Project - >属性 - >代码帮助 - > C ++标准 - > C ++ 11。我还应该更新或配置什么才能让Netbeans Code Assistance识别这些条款?

2 个答案:

答案 0 :(得分:5)

确保您使用Netbeans版本> = 7.2,因为此版本中引入了C ++ 11支持(see "C/C++")。

如果您已经在NB中将C ++标准设置为C ++ 11,则可以重新分析您的procject:

  1. 选择您的C ++项目 - >右键单击
  2. Code Assistance - >的 Reparse Project

  3. 修改

    我在 NetBeans 7.3 RC1 下使用以下代码测试了这些方法(使用 GCC 4.7.2 ):

    #include <iostream>
    #include <list>
    
    int main ()
    {
      std::list<int> mylist = {5,10,15,20};
    
      std::cout << "mylist contains:";
    
      for (auto it = mylist.cbegin(); it != mylist.cend(); ++it)
        std::cout << ' ' << *it;
    
      std::cout << '\n';
    
      return 0;
    }
    

    将C ++ Standard设置为默认值会失败,但使用C ++ 11( Project Properties -> Build -> C++ Compiler -> C++ Standard = C++11 )会有效。

答案 1 :(得分:2)

当我开始使用NetBeans和C ++ 11时,我记住了几点要点

  • 确保它是最新的(NetBeans 7.2.1)
  • 不要使用Cygwin包含GCC库来编译程序。请改用MinGW安装程序。使用MinGW安装程序时,请务必从互联网上“下载最新软件包”。
  • 安装后,请确保环境路径变量为 设置正确。
  • 打开NetBeans并转到工具 - &gt;选项。单击C / C ++选项卡,确保将MinGW用作默认编译器。
  • 右键单击您的项目,然后选择属性。选择 C ++编译器选项,并确保在附加选项空间中编写 -std = c ++ 11