【发布时间】:2013-09-27 03:21:03
【问题描述】:
我是 C++ 新手。当我写作时
for (char* c : v)
{
cout << c;
}
我明白了
“C++98 模式下不允许基于范围的‘for’循环”
据我了解,我必须更改我的 GCC 版本(或只是模式?)。我的g++ -v:
使用内置规范。 COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-linux-gnu/4.7/lto-wrapper 目标:i686-linux-gnu 配置为:../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.7.2-2ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.7/README。错误 --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id -- with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --libdir=/ usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable -plugin --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686- linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu 线程模型:posix gcc 版本 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1) `
无法从 vim(使用 c.vim 插件)、sublime text3 和使用 gcc program.cpp 和 gcc -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”,它可以工作。
【问题讨论】:
-
你是否尝试在 vim 中编译代码?
-
注意区分C++和C。C99是C的标准;没有 C++99。
-
您应该使用命令
g++ -std=c++11。gcc用于 c 文件,g++用于 c++ 文件。 -
另外,v 是什么类型。如果 v 是某个标准容器(如
std::vector),您可能想要for (char c : v ) cout << c;