3

私は、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()
    {
    ...
    }
4

1 に答える 1