私はC++を学んでおり、 Microsoft Visual C++ 2008 ExpressとEclipse Ganymedeをテストしていたとき、g++コンパイラをデフォルトとして使用していましたが、 VC++の同じコードでエラーが発生し、g++ ではエラーやエラーなしで正常にコンパイルされることに気付きました。警告が出て正常に実行されますが、 VC++構文とg++構文の違いは何ですか? ありがとう!
3 に答える
私は新しいのでコメントできません(評判はまだ50ではありません)が、同様のトピックを扱う別のスタックオーバーフローの質問があります:
それは非常に幅広いトピックです。両方のコンパイラは、いくつかの例外を除いて広くISO C ++に準拠していますが、それらの例外は異なる場合があります(たとえば、VC ++はthrow
関数の指定子を非標準の方法で処理しますが、g ++はその点で標準に準拠しています)。さらに、両方のコンパイラはかなり多数の拡張機能を提供しますが、これらはほとんど相互に互換性がありません(たとえば、VC ++__property
と__interface
、またはg ++typeof
と計算されたgoto)。一般に、ここでの最善のアドバイスは、いずれかの製品のドキュメントを参照することです。問題が発生している特定のコードがあり、それが一方でコンパイルされ、他方ではコンパイルされない理由を知りたい場合は、より詳細に回答することができます。
これをPavelの答えに追加してください:
クロス プラットフォーム製品を開発している場合は、g++ ( MingW ) を使用し、C++ 標準に準拠してください。標準機能が目的を果たさない場合は、MingW が提供する POSIX 準拠の API を使用します。MingW を使用してビルドされた実行可能ファイルは、ターゲット システムに特別なランタイムをインストールする必要はありませんが、VC++ 2008 ではそれが必要です。そのため、MingW アプリケーションを使用すると、展開がより簡単になります。
VC++ の利点は、優れた IDE です。Microsoft コンパイラは、Windows 固有の最適化もいくつか実行しているようです。
それでも、CodeBlocks IDE で補完されたMingWは、優れた無料のクロスプラットフォーム C++ 開発環境を提供します。