C の選択的コード除去を備えたプリプロセッサ
提供された C の質問は、定義済みまたは未定義のマクロ値に基づいて非アクティブなコード ブロックを削除するプリプロセッサを探します。コマンドライン引数で指定します。この要件を満たす分析とツールのリストは次のとおりです。
問題の理解
プリプロセッサのデフォルトの動作では、特定のマクロが制御している場合でも、すべてのコード セクションが組み込まれます。それらの実行は未定義です。これにより、不要なコードが肥大化してエラーが発生する可能性があります。理想的な解決策は、これらの非アクティブなブロックを選択的に削除するプリプロセッサです。
解決策: Unifdef (sunifdef) の息子
返信で示唆されているように、Sunifdef は強力な要件に完全に一致するツール。ユーザーは、-D および -U オプションを使用して、どのマクロが定義されているか、または未定義であるかを指定できます。次に、コードを分析し、指定されたマクロに依存するセクションをすべて削除します。
Sunifdef の動作例
次のコード スニペットを考えてみましょう:
#ifdef MACRO1 // Code specific to MACRO1 defined #else // Code specific to MACRO1 undefined #endif
-D MACRO1 を指定して sunifdef を実行すると、定義されている MACRO1 に固有のコードのみが出力され、事実上、
その他のツール
Sunifdef は人気のある選択肢ですが、利用できる唯一のツールというわけではありません。その他のオプションは次のとおりです。
以上がプリプロセッサはコマンドライン マクロ定義に基づいて非アクティブな C コードを削除できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。