4

私はC++を学んでおり、 Microsoft Visual C++ 2008 ExpressEclipse Ganymedeをテストしていたとき、g++コンパイラをデフォルトとして使用していましたが、 VC++の同じコードでエラーが発生し、g++ ではエラーやエラーなしで正常にコンパイルされることに気付きました。警告が出て正常に実行されますが、 VC++構文とg++構文の違いは何ですか? ありがとう!

4

3 に答える 3

13

私は新しいのでコメントできません(評判はまだ50ではありません)が、同様のトピックを扱う別のスタックオーバーフローの質問があります:

VisualC++および*nix環境での違いのコンパイル

于 2009-07-22T23:41:16.813 に答える
4

それは非常に幅広いトピックです。両方のコンパイラは、いくつかの例外を除いて広くISO C ++に準拠していますが、それらの例外は異なる場合があります(たとえば、VC ++はthrow関数の指定子を非標準の方法で処理しますが、g ++はその点で標準に準拠しています)。さらに、両方のコンパイラはかなり多数の拡張機能を提供しますが、これらはほとんど相互に互換性がありません(たとえば、VC ++__property__interface、またはg ++typeofと計算されたgoto)。一般に、ここでの最善のアドバイスは、いずれかの製品のドキュメントを参照することです。問題が発生している特定のコードがあり、それが一方でコンパイルされ、他方ではコンパイルされない理由を知りたい場合は、より詳細に回答することができます。

于 2009-07-22T23:40:51.493 に答える
0

これをPavelの答えに追加してください:

クロス プラットフォーム製品を開発している場合は、g++ ( MingW ) を使用し、C++ 標準に準拠してください。標準機能が目的を果たさない場合は、MingW が提供する POSIX 準拠の API を使用します。MingW を使用してビルドされた実行可能ファイルは、ターゲット システムに特別なランタイムをインストールする必要はありませんが、VC++ 2008 ではそれが必要です。そのため、MingW アプリケーションを使用すると、展開がより簡単になります。

VC++ の利点は、優れた IDE です。Microsoft コンパイラは、Windows 固有の最適化もいくつか実行しているようです。

それでも、CodeBlocks IDE で補完されたMingWは、優れた無料のクロスプラットフォーム C++ 開発環境を提供します。

于 2009-07-23T05:02:06.873 に答える