C ++ 11中无法识别的命令行

时间:2015-04-22 00:25:20

标签: c++ c++11

我编译了以下程序,但我不知道为什么会出现以下错误:

  

错误:无法识别的命令行选项'-std = c ++ 11'。

我的gcc版本是4.6,我已经将netbeans中的c ++编译器设置为c ++ 11。

#include <cstdlib>
#include <algorithm>
using namespace std;

template<class T>
void parallel_sort(T* data, int len, int grainsize)
{
    if(len < grainsize) // Use grainsize instead of thread count so that we don't e.g. spawn 4 threads just to sort 8 elements.
    {
        std::sort(data, data + len, std::less<T>());
    }
    else
    {
        parallel_sort(data + len/2, len/2, grainsize); // No need to spawn another thread just to block the calling thread which would do nothing.

        std::inplace_merge(data, data + len/2, data + len, std::less<T>());
    }
}

int main(int argc, char** argv) {
    return 0;
}

2 个答案:

答案 0 :(得分:4)

请仔细阅读GCC 4.6手册,其中说明您需要使用-std=c++0x-std=gnu++0x,请参阅https://gcc.gnu.org/onlinedocs/gcc-4.6.4/gcc/Standards.html

这是因为GCC 4.6是在C ++ 11标准发布之前发布的。

您需要调整Netbeans设置以使用-std=c++0x代替-std=c++11

答案 1 :(得分:1)

将您的GCC升级到支持现代C ++ 11的东西,如GCC 4.8或更高版本。