为什么某个.cpp文件不能编译?

时间:2016-05-24 07:03:40

标签: c++ c++11 compiler-errors g++ mingw

我徒劳地试图找到解决问题的方法。非常感谢任何帮助。

我刚刚安装了Mingw,试图在没有IDE的情况下开始编码。我正在尝试学习C ++和一个我不会编译的文件。该文件是一个.cpp文件,它是我在Visual Studio 2015中成功编译的在线课程的一部分,但不是我用于在cmd内编译的标准g ++命令。

以下是代码:

#include <cstdio>
using namespace std;

int main( int argc, char ** argv )
{
    int ia[] = { 1, 2, 3, 4, 5 };
    for( auto i : ia ) {
        printf("i is %d\n", i);
    }
    return 0;
}

当我尝试编译时,命令提示符返回以下内容:

cpp112.cpp: In function 'int main(int, char**)':
cpp112.cpp:9:15: error: 'i' does not name a type
     for( auto i : ia ) {
               ^

我认为可能是我的编译器已经过时了,但是当我打开MinGW安装gui时没有更新显示。

再次感谢您的帮助。我没有想法。

1 个答案:

答案 0 :(得分:6)

您使用的语法出现在C ++ 11标准中,因此您应该确保两件事:您的g ++编译器版本支持它(所有现代编译器都支持它)并且您已指定应该使用C ++ 11标准。 E.g。

g++ cpp122.cpp -std=c++11

您也可以尝试-std = c ++ 14 for C ++ 14 features。

对于版本6.1之前的g ++,默认模式为-std = gnu ++ 98。从6.1开始,默认模式为-std=gnu++14