Cヘッダファイルの前処理

Cヘッダファイルの前処理

ファイルに特定の名前が定義されているかどうかに応じて、含まれるか省略されている多くのセクションを持つ大きなヘッダーファイルがあります。たとえば、次のような行があります。

\#define A
\#define B 2
...
\#ifdef A
  ...
  ...
\#endif
...
\#ifdef B
  ...
  \#ifndef A
    ...
  \#endif
\#endif

定義された名前と未定義の名前のため、省略された部分の両方を削除したファイルを作成したいと思います。また、出力ファイルから単一行と複数行のコメントを削除したいと思います。

頑張りました

gcc -E Configuration.h > Configuration.i

しかし、これは次のような出力のみを生成します -

1 "Configuration.h"
1 "built-in" 1
1 "built-in" 3
341 "built-in" 3
1 "command line" 1
1 "built-in" 2
1 "Configuration.h" 2

(上記のテキストでは、実際には各行の前にハッシュ文字があり、「組み込み」と「コマンドライン」という単語は山かっこで囲まれていますが、これらの文字を私のメッセージに入力すると奇妙な効果が現れます。)

私がやろうとしていることをどのようにできるかについての提案。これを行うためにコードやスクリプトを書く必要はありません。

答え1

オプションの使用-P(線表示の生成を無効にする):

gcc -P -E -xc input > output

他の興味深いオプションは-Cマン-fpreprocessedページにありますgcc(1)

関連情報