GCCとCCコンパイラの違い

Anonim

GCCとCCコンパイラ

CCは、UNIXコンパイラコマンドに与えられた名前です。これは、ご使用のオペレーティング・システムのデフォルトのコンパイラー・コマンドとして使用され、同じコマンドでも実行可能です。一方、GCCはGNUコンパイラオペレーティングシステムです。 GNUやLinux上で動作するシステムでは、CCがリンクであることが一般的であるため、スクリプトはコンパイラを互換性を持って簡単に使用できます。 GNUコンパイラコレクションとCCコンパイラの使用に関しては、さまざまな違いがあります。これらの違いは、一般的に2つの主要なグループに分類することができます。これらのうちの1つはより特定的であり、一方、他のグループはより一般的である。

<! - 1 - >

相違点

CコンパイラとC ++コンパイラとの主な相違点は、 C ++コンパイラはC ++プログラムを受け入れますが、C言語のプログラムは任意にコンパイルしません。多くのCプログラムが有効なC ++プログラムではないにもかかわらず、C ++でよく理解できるサブセットにC言語コードを書くことが可能であることが示されていますが、これは一般的に真です。一方、CコンパイラはCプログラムを受け入れますが、その中で実行されるC ++プログラムのほとんどを拒否します。この問題が発生する理由は、ほとんどのC ++プログラムがCで使用できない構文を実行するためです。

<! - 2 - >

これらのプログラム言語で利用できるライブラリは、言語によって大きく異なります。 C ++プログラムはCライブラリで実行できますが、これはプラットフォーム固有のものです。一方、CプログラムはC ++ライブラリを使用できません。したがって、C ++はCよりも大きなライブラリセットを使用する傾向があります。

Solarisでは、コンパイラコマンドによって生成されるオブジェクトコードは、g ++で生成されるコードとはどのような形でも互換性がありません。慣習は異なります。主な違いは、例外処理と名前​​のマングリングです。しかし、名前のマングリングは、オブジェクトが互いにリンクされるのを防ぐために重要であることに注意することが重要です。これは、CCでコンパイルされたライブラリを使用すると、プログラム全体がCCでコンパイルされる必要があるという事実を指摘しています。また、CCでコンパイルされたライブラリとg ++で別のライブラリを使用する必要がある場合は、必要な機能を確実にするためにライブラリの再コンパイルが必要です。

<! - 3 - >

生成されるアセンブラの品質において、GNUコンパイラ・コレクションであるGCCは、この作業において非常に優れています。ただし、ネイティブコンパイラは時々良く機能します。インテルのコンパイラは、GCCでまだ複製されていない徹底的な最適化を持っていると言えるでしょう。

標準言語とコンパイラがサポートしている言語との間にはわずかな違いがありますが、どちらのコンパイラも現行の標準には全く新しいものです。これらの標準は(C ++ 98、C ++ 2003、C99)です。旧式のC89サポートは両方のコンパイラで利用可能であり、期待される応答を理解することは、コンパイラが期待どおりにロールアウトするために不可欠です。全体として、GCCは、望みの結果を得るためにそれを行うことができる拡張や調整のために、人生をより簡単にすることに焦点を当てているようです。

要約

CおよびC ++コンパイラライブラリの相互互換性に問題があります。

C ++プログラムはCライブラリで実行できますが、これはプラットフォーム固有です。

CCで構成されたライブラリを使用するには、GCCではなくCCでコンパイルする必要があります。

CCとg ++でライブラリをコンパイルしている場合、ライブラリの1つを再コンパイルする必要があります。

GCCは質の高い議会を創造する素晴らしい仕事をしています。

言語機能におけるCCとGCCの両方は、現在の標準に関連して大きい。