9

StackOverflow に関するいくつかの投稿では、可能な場合は複数の (この場合は C/C++) コンパイラをサポートすることをお勧めしました。これにより、より標準に準拠したコードを作成する必要があり、バグの発見に役立ちます。

そこで、プロジェクトにサポートを追加できる追加の無料の C/C++ コンパイラを探していました (C/C++ で書かれています (両方の言語を組み合わせて))。Open Watcom が興味深い候補であることがわかりました。

私の質問は、Open Watcom C/C++ コンパイラーと他のコンパイラー (gcc/g++、Visual C++ など) を比較した場合の長所と短所は何ですか?

4

6 に答える 6

7

ポータブルコードが目的である場合、通常、コードをすべてのコンパイラによって実装される標準サブセットに制限しようとするため、特に利点はありません。最小公分母と言えますが、それはやや蔑称に見えるかもしれません。

あるコンパイラの別のコンパイラに対する利点は、一般に、コンパイラが提供する拡張機能、含まれるライブラリ、または生成されたコードのパフォーマンスのいずれかにあります。移植性が目的の場合は、どちらにも興味がないでしょう。この場合に関心があるのは、あるコンパイラの別のコンパイラに対する利点ではなく、ISO標準への準拠と準拠です。

初期の商用化では、Watcomは利用可能な最高の最適化コンパイラの1つとして有名でした。ただし、それ以降、プロセッサの開発に追いついているかどうかは疑問です(または、16ビットから32ビットx86への移行ですら!)。

場合によっては利点と見なされる可能性のあるその1つの機能は、DOS、OS / 2、およびWindowsをサポートすることですが、これはおそらく、レガシーシステムのメンテナンスが目的である場合にのみ利点になります。LinuxとBSD、およびx86以外のプロセッサに移植するための取り組みは存在しますが、完全ではありません。GCCはすでに存在し、何年も前から存在しています。

GCCとVC++をサポートできるのであれば、おそらく十分なコンパイラの独立性があることをお勧めします(ただし、(-Wall -WerrorGCCと\W4 \WxVC ++では)高い警告レベル設定でコンパイルすることをお勧めします)。コンパイラの移植性は、OSの移植性と比較して些細な問題だと思います。本当に考慮する必要があるのは、コンパイラに依存しないコードのサポートではなく、クロスプラットフォームのライブラリのサポートです。

ただし、コンパイラで遊ぶことが重要な場合は、 DigitalMarsコンパイラも検討してください。Watcomと同様に、これにも商用コンパイラの遺産があり、前世ではZortech / Symantec C /C++コンパイラでした。

于 2010-12-23T17:18:08.620 に答える
5

ここで、Watcom(実際にはOpenWatcom)コンパイラが「古くなっている」ことに関係する式を使用する人もいます。それで、それはどういう意味ですか?

  • 最新のC標準を実装していない可能性があります。「日付のない」コンパイラはいくつありますか?
  • これは、主にCとForTranの環境であり、その後どこかで私が判断できないC ++実装が登場するため、フレームワークを提供しないことを意味する可能性があります。
  • ガベージCコードから優れたアセンブリコードを生成できない可能性があります。
  • x64開発をサポートしていない可能性があります。
  • これは、デバッガーが初歩的であり、アセンブリのデバッグをサポートしていることを意味している可能性があります。

16ビットのリアルモードコードとプロテクトモードコードのサポートに加えて、次のように機能します。

  • Win32環境で誰もが使用するフラットメモリモデルで優れた32ビットプロテクトモードコードを生成します。
  • そのコード生成機能は優れており、より多くの「日付のない」コンパイラーがすぐそこにあります。
  • プロファイラーを使用してマルチスレッドコードを簡単に調整できます。

コンパイラをどのように「感じ」ますか?私はその方法がわかりません。エラーメッセージの書き方ですか?コンソールログのメッセージにありますか?

世界最大のネットワークオペレーティングシステムであるNovellNetwareは、開発環境としてWatcomを使用していました。それはWatcomについて多くを語っています。そして、誰もが忘れないように:Netwareは、レドモンドの不正行為と組み合わされた不十分なマーケティング管理のために死にました。それは技術的な卓越性の欠如で死ぬことはありませんでした。

私が言おうとしているのは、あなたが何について話しているのかわからない皆さんは、おそらく答えを書くことに少し熱心ではないはずだということだと思います。

私はそれがそれらの切望されたポイントとバッジを手に入れることとあなたが何を持っているかについてのすべてであることを知っています。そして、それらをどのように取得するかは無関係ですよね?

于 2012-05-22T19:15:12.203 に答える
5

「haxxor」が を使用して通常の呼び出し規約から定義できるという事実である場合、何か watcom が支持しています#pragma aux。それ以外には、ひどいハードウェア制限がない限り、そのような時代遅れのコンパイラを使用しようとする理由さえありません。Imo、心配するのはGCC、ICC、MSVCの3つだけです

于 2010-12-23T18:33:48.517 に答える
4

Open Watcomコンパイラはやや時代遅れで、感じます。これは、MSDOSゲームを作成するための優れたコンパイラであったものに基づいています。現在、それはあまり標準に準拠しておらず、その標準ライブラリは未成熟な状態です。

Intel cc、g ++、VC ++、CLangなどのより近代的で人気のあるコンパイラを好みます。Borland Cについてはよくわかりませんが、長い間試していません。

于 2010-12-23T17:12:28.640 に答える
4

利点:

  • それは無料です
  • それはオープンソースです。それとそのランタイム ライブラリは、好きなように変更できます。
  • それはクロスプラットフォームです。他のプラットフォームの中でも、Windows と Linux で実行できます。さらに、単一のプラットフォームを使用して、さまざまなプラットフォーム用のプログラムを構築できます

短所:

  • 少し時代遅れですが、過去ほどではありません
于 2010-12-24T13:33:47.103 に答える