このドキュメントを読むと、最後に次の 1 つの文があります。
歴史的に、C++ や Fortran を含む多くの言語のコンパイラは、C などの別の高級言語を出力する「プリプロセッサ」として実装されてきました。
プリプロセッサやドキュメントについて何も知りませんか? これらすべての言語が C ソース コードに翻訳されるということですか。
このドキュメントを読むと、最後に次の 1 つの文があります。
歴史的に、C++ や Fortran を含む多くの言語のコンパイラは、C などの別の高級言語を出力する「プリプロセッサ」として実装されてきました。
プリプロセッサやドキュメントについて何も知りませんか? これらすべての言語が C ソース コードに翻訳されるということですか。
一部の言語は、コンパイラが C コードを生成し、それが C コンパイラによってコンパイルされることによって実装されています。注目すべき例は次のとおりです。
cfront
C++ コードから生成された C コード。C++ が例外をサポートすると実用的ではなくなりました (詳細については、Stroustrup The Design and Evolution of C++を参照してください) が、すべての C++ コンパイラがこの手法を使用したわけではありません (実際、それ以外のコンパイラを知りませんcfront
)。「プリプロセッサ」というフレーズは、現在ではまったく異なる意味を持ち、ここで使用すると混乱を招きます。しかし、はい、ここでは、一部のコンパイラがそのソースを別の言語に出力することを意味します。
それはsource to source compilerと呼ばれるべきです。例の 1 つは、C++ を C に変換したCfront (Bjarne Stroustrup 自身によって設計された) です。
C++ における「プリプロセッサ」という語句の通常の意味については、こちらを参照してください。
いいえ、必ずしもそうではありません。多くの C++ コンパイラは、GCC ドキュメントのように (gcc/g++ ではなく)、C コード出力を生成します。なぜ彼らはこれを行うのですか?そのため、C コンパイラがコンパイルできるすべてのバックエンド実行可能コード (X86、AMD など) にピギーバックできます。宛先コードとして C を使用することで、バックエンドのローエンド コーディングを大幅に節約できます。このようなコンパイラには、元の Cfront および Comeau C/C++ が含まれます。