我是C++的新手。当我写

for (char* c : v)
{
    cout << c;
}

我懂了



据我了解,我必须更改我的GCC版本(或仅更改模式?)。我的g++ -v:



无法从vim(带有c.vim插件),sublime text3和使用gcc program.cppgcc -pedantic -std=c99 program.cpp的终端进行编译。

我已经下载了gcc 4.8.1,但它不是deb软件包,因此无法正确安装。还听说过C++ 11,C++ 14,C++ 98,C++ 99。在哪里/如何获得/安装最新版本?

vim插件c.vim的解决方案:

编辑“c.vim / plugin / c.vim”。更改此行
let s:C_CplusCFlags = '-Wall -g -O0 -c -std=c++11' " C++ compiler flags: compile, don't optimize
我添加了“-std = c++ 11”,它可以正常工作。

最佳答案

如上一个答案中所述,您正在尝试使用最新的C++标准(称为C++ 11)的功能,同时针对较旧的标准进行编译。
C++ 11是最新的C++标准,也是唯一的支持范围。

现在,您需要区分C++标准和对该标准的编译器支持。
在过去的几年中,gcc编译器逐渐增加了对C++ 11功能的支持。
以下链接显示了哪个gcc版本支持哪种C++ 11功能:

C++0x/C++11 Support in GCC

如您所见,基于范围是在gcc 4.6中添加的,因此您不需要gcc 4.8即可使用此功能-gcc 4.6或更高版本就足够了。

编译时,您还需要告诉编译器要针对哪个标准进行编译。 -std = whatever告诉编译器使用哪个标准。

您当前正在使用“-std = c99”,告诉编译器使用旧的C++标准进行编译。相反,您需要将此标志设置为c++ 11。如果这在您使用的gcc版本上不起作用,请尝试使用“-std = c++ 0x”(C++ 0x是C++ 11标准的旧名称。)

10-01 21:49
查看更多