Oracle® Solaris Studio 12.4: C ユーザーガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

6.4.2 古い C の翻訳段階

以前の C コンパイラは、そのような単純な一連の段階に従っておらず、それらの手順が適用される順番も予測不可能でした。コンパイラとは別のプリプロセッサが、マクロを置換して指令行を処理するときに、トークンと空白を認識していました。そして、コンパイラがプリプロセッサの出力を適切に再トークン化し、言語を構文解析し、コードを生成していました。

プリプロセッサ内のトークン化プロセスは刻一刻の処理であり、マクロ置換は、トークンベースではなく文字ベースの処理として行われていました。したがって、トークンや空白は前処理中に大きく変動する可能性がありました。

これら 2 つのアプローチからいくつかの違いが生じます。このセクションの残りでは、マクロ置換中に発生する行の連結、マクロ置換、文字列化、およびトークンの連結によって、コードの動作がどのように変化する可能性があるかを説明します。