ジョエルの答えは、あなたが持っている理由で良いです 他にもいくつかありますが、C を使用するには:
- C での証明とテストが容易な業界のガイドラインを満たす必要があります
- C++ ではなく C で作業するためのツールがあります (コンパイラだけでなく、すべてのサポート ツール、カバレッジ、分析などについて考えてください)
- ターゲットの開発者は C の達人
- ドライバ、カーネル、またはその他の低レベル コードを作成している
- C++ コンパイラは、作成する必要のある種類のコードを最適化するのが得意ではないことを知っています
- あなたのアプリはオブジェクト指向に向いていないだけでなく、その形式で書くのも難しいでしょう
ただし、場合によっては、必要 C++ ではなく C を使用するには:
- <リ>
アセンブラーでコーディングする手間をかけずに、アセンブラーのパフォーマンスが必要です (C++ は、理論的には「完璧な」パフォーマンスを実現できますが、コンパイラは、優れた C プログラマーが目にするような最適化を確認するのが得意ではありません)
<リ>あなたが書いているソフトウェアは些細なものであるか、ほとんどそうです - 小さな C コンパイラを取り出し、数行のコードを書き、コンパイルすれば準備は完了です - ヘルパーで巨大なエディタを開く必要はなく、実際に書く必要はありません空で役に立たないクラス、名前空間の処理など。C++ コンパイラでほぼ同じことを行うことができ、単純に C サブセットを使用できますが、C++ コンパイラは小さなプログラムであっても低速です。
<リ>極端なパフォーマンスまたは小さなコード サイズが必要ですが、ライブラリのサイズとパフォーマンスが原因で、C++ コンパイラが実際にそれを達成するのが難しくなることを知っています。
あなたは、C サブセットを使用して C++ コンパイラでコンパイルすることもできると主張していますが、そうすると、コンパイラによってわずかに異なる結果が得られることがわかります。
いずれにせよ、あなたがそうしているなら、C を使用していることになります。あなたの質問は本当に「なぜ C プログラマーは C++ コンパイラーを使用しないのですか?」ですか?そうであれば、言語の違いを理解していないか、コンパイラの理論を理解していません。
ミニマリズムとシンプルさが好きです。
- 彼らはすでにCを知っているから
- C コンパイラしかないプラットフォーム用の組み込みアプリを構築しているため
- C で記述されたレガシー ソフトウェアを維持しているため
- オペレーティング システム、リレーショナル データベース エンジン、市販の 3D ビデオ ゲーム エンジンのレベルで何かを書いている