2016-08-10 5 views
0

私はWindowsでMinGWを使用しているgccコンパイラを使用しています。バージョンは4.9.3です。 -std = C++ 98、-std = C++ 03または-std = C++ 11が引数として使用されている場合、次のコードでエラーが発生します。場合-std =のGNU ++ 98#include <iostream>は、-std = C++を使用してエラーを返します。11

#include <iostream> 

int main() 
{ 
    std::cout << "Hello world!" << std::endl; 
    return 0; 
} 

コードがエラーなしでコンパイル、-std =のGNU ++は03又はSTD = GNU ++ 11は、引数として使用されます。また、コードはC++バージョンの引数を使用しないときにエラーなしでコンパイルされます(g ++ test.cpp -c)

さらに調査したところ、#includeは問題を引き起こしていました。

int main() 
{ 
    return 0; 
} 

しかし、私のコードをテストするために含めるために他のものは、次の作品を探しているとき:

#include <cmath> 
int main() 
{ 
    return 0; 
} 

が、これはstd = C++の引数のいずれかを使用する場合 このコードは、エラーを生成しませんしていない:

何が起こっているのですか? gnu ++の簡単な検索から、それは追加の拡張機能を提供していますが、上記のものと同じくらいシンプルなコードはどんな拡張機能にも依存してはいけませんか?

g ++ test.cpp -c -std = C++ 11でコードの最初の部分をコンパイルするときに発生する大きなエラーを貼り付けました。 http://pastebin.com/k0RLtWQz

最初のメッセージは、次のとおり

(また、GCCの新しいバージョンを使用する)にMinGW64に変更することによって解決
$ g++ test.cpp -c -std=c++11 
In file included from c:\mingw\include\wchar.h:208:0, 
       from c:\mingw\lib\gcc\mingw32\4.9.3\include\c++\cwchar:44, 
       from c:\mingw\lib\gcc\mingw32\4.9.3\include\c++\bits\postypes.h:40, 
       from c:\mingw\lib\gcc\mingw32\4.9.3\include\c++\iosfwd:40, 
       from c:\mingw\lib\gcc\mingw32\4.9.3\include\c++\ios:38, 
       from c:\mingw\lib\gcc\mingw32\4.9.3\include\c++\ostream:38, 
       from c:\mingw\lib\gcc\mingw32\4.9.3\include\c++\iostream:39, 
       from test.cpp:1: 
c:\mingw\include\sys/stat.h:173:14: error: '_dev_t' does not name a type 
struct _stat __struct_stat_defined(_off_t, time_t); 
      ^
c:\mingw\include\sys/stat.h:173:14: error: '_ino_t' does not name a type 
struct _stat __struct_stat_defined(_off_t, time_t); 
      ^
… 
+1

これは起こりません。インストールが壊れているようです。 (また、古いです。)再インストールしましたか? –

+0

related/dupe:http://stackoverflow.com/questions/38538924/g-updated-on-ming-get-massive-error-messages – NathanOliver

+1

最初の2つのエラーメッセージが表示された場合は、インストール時に問題があります。 Unixシステムでは、 ''ヘッダが機能していないかのようになります。再インストールするかどうかについて真剣に考えてください。これは問題を解決する最も簡単な方法です。さもなければ、どのヘッダが '_ino_t'と' _dev_t'を定義していないかを追跡することになります。厳密なC++でコンパイルするときになぜそうしないのですか?システムのバグかもしれません。 GCC 4.9.3から6.1.0にアップグレードできますか? (GCC 4.9.4は、最後の4.9.xバージョンとして2016-08-03がリリースされました.GCC 5.4も同時にリリースされました) –

答えて

0

。問題は、私のmingw32インストールまたは配布(Jonathan Lefflerが指摘している)のいずれかで問題が発生したようです。 すべての-std = C++ xxパラメータが機能するようになりました。

関連する問題