不可能な状況を避けるために、問題を2つに減らすことができます。Cファイルが依存する定義済みのマクロを確認するツールはありますか?
ケース1
最初の(最も簡単な)場合は、プリプロセッサはそれを検出する機会を持っている状況で、それはそれは最初の前に定義されている(事前に定義されたマクロに依存プリプロセッサディレクティブがありますです入力行)かどうかを判断する。例えば:
#ifdef FOO
#define BAR 42
#else
#define BAR 43
#endif
はFOO
が予め定義されているかどうかに依存します。ただし、ファイル
#undef FOO
#ifdef FOO
#define BAR 42
#endif
はありません。より難しいケースは、依存関係が実際に問題であるかどうかを検出することです(上記の場合はFOO
またはBAR
のいずれも出力に影響しません)。成功したコンパイルが事前定義されたマクロに依存する
ケース2
秒(硬い)場合である:プリプロセッサはかどうか懸念しているように完全に細かい限りある
INLINE int fubar(void) {
return 42;
}
ENTRY_POINT
はあらかじめ定義されていますが、INLINE
が慎重に定義されていないと、コードはコンパイルされません。同様に、出力が影響を受けない場合を除外することも可能ですが、その例は見つけられません。 1は、おそらくシンボルが正常にコンパイルするためには事前に定義する必要がある場合にそれを制限する必要がありますので、
int fubar(void) {
return 42;
}
fubar
事前に定義されているが、これをうまくコンパイルを変更することができます:ここでの合併症は、一例ではということです。
このようなツールは、プリプロセッサ(と2番目のケースのCパーサー)に似ていると思います。問題はそのようなツールがあるかどうかです。または、最初のケースだけを扱うツールがありますか?それとも全く?
ツールレックは話題にはなりませんが、一般的に、あなたはそれを知っていますよね? –
@SouravGhoshこれは、ツールの推奨事項ではなく、ツールの存在です(ただし、例では肯定的な回答をサポートする必要があります)。 – skyking
これをツールレックの質問としてクローズすることを推奨した人には:ツールレックの質問であるためには、少なくとも** 2つの**ツール(質問に答える)が必要です。このようなツールが1つしかない場合は、お勧めはあまりありませんし、お勧めするツールがない場合は、これはツールの問題であるというあなたの主張を支持しているとはまだ考えていますか?もしあなたがそうしたら、私は彼らが質問に答えてくれるのを見たいと思います。 – skyking