我编译了以下程序,但我不知道为什么会出现以下错误:
错误:无法识别的命令行选项'-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;
}
答案 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或更高版本。