Cファイルがあります(簡単にするために、何も含まれていないと仮定します)。この C ファイルを適切にコンパイルするには、リテラル数の定義がいくつか必要です。これらがどの定義であるかを調べたいと思います。
当然のことながら、ファイルをコンパイルしようとすると、ある時点で失敗し始めます。いくつかの障害回復により、追加の定義に関する障害通知を受け取る場合があります。しかし - それは私が望むものではありません:
- プログラムのコンパイルを完了することに興味はありません。構文ツリー (または何らかの単純化された構文ツリー) を構築するだけで十分です。
- マクロが欠落していることを除けば、プログラムは構文的に正しいと推測できます。これは、C の場合、構文的に正しいことを意味するはずです。
- 関連するマクロはすべて大文字、つまり
[A-Z][A-Z_0-9]*
) の形式であると想定できます。
未定義のマクロのリストを取得するための代替手段は何ですか?
動機: 実際には、動的コンパイル ライブラリに何かをフィードしています。必要なマクロがすべて定義されているかどうかを事前に確認したいのですが、ファイルに必要なマクロがアプリオリにわからない (つまり、入力ファイルごとに異なる可能性があります) )。