私は、C 言語を使用して大規模なプロジェクトに取り組んでいます。C言語には、多くのプリプロセッサ マクロがあります: #ifdef/#if。マクロはメイクファイルで定義されています。
クリーンなコードを得るために、makefile を「gcc -E」を使用するように変更しました。しかし、gcc プリプロセッサはインクルードされたヘッダー ファイルも展開しますが、これは予想外です。
含まれているヘッダー ファイルを展開せずに #ifdef/#if を取り除く方法はありますか? GCC オプションを検索しましたが、まだ答えが見つかりません。
例:
#include "a.h"
#ifdef ABC
func()
#else
func(a)
#endif
{
...
}
makefile では、このソースは -DABC でコンパイルされています。ファイルを次のように変更する方法を探しています。
#include "a.h"
func()
{
...
}