独自の拡張機能を C に変更または追加し、それらを GCC C コンパイラに追加したい場合、何をする必要がありますか? 言語の変更を提案したくはありません。C コンパイラが実際にどのように機能するかを知りたいのです。
私はGCCのソースコードを見てきました.Objective-Cは、変更されたランタイムライブラリを参照するコードを生成する単純なパーサーとして実装されているように見えます.Cベースのすべてのものに対して、通常のC コンパイラ。私はそれを熱心に研究していないので、おそらく正しい軌道に乗っていません。
たとえば、自分のキーワードを Objective-C に追加したいとします。多分のように、実装しやすいと思われるものを追加したいと思い@assert
ます。私が望むのは@assert
、Objective-C ランタイムに追加する関数を呼び出すことだけです。
objc_runtime_assert (__FILE__, __LINE__, expression, "string version of expression");
明らかに、これを関数呼び出しとマクロとして実装することもできますが、C ソース コードの解析とコンパイルの段階を理解したいので、言語に独自の拡張機能を追加して、自分で使用できるようにしたいと考えています。
私が一貫して見てきたソース コードは「ツリー」を参照しており、アクションを実行したり、これらのツリーから情報を取得したりするマクロは非常に多くあります。
この種のことを詳細に説明しているドキュメントはありますか?