6

これは非常に奇妙な質問のように聞こえるかもしれませんが、これが必要です: (いくつかのヘッダーのみのライブラリからの) 大量の c++ ヘッダー ファイルと 1 つの cpp ファイルがあります。私がやりたいことは、インクルードをまったく含まない単一の cpp ファイルを生成することです。

なんで?コンパイラが私が使用しているいくつかのライブラリを持っていないコンテストと、単一の cpp ファイルしか提出できないコンテストの場合。

理想的には、この「スクリプト」は、すべての「#include」を再帰的にコピー アンド ペーストするだけでなく、実際に必要なものだけを使用するファイルを作成します。

コードに「#include」を追加すると、プリプロセッサがいくつかのファイルを生成するはずです。では、これらの中間ファイルと (おそらく非常に長い) ファイルを表示するにはどうすればよいでしょうか?

4

1 に答える 1

8
  • GCC-Eオプションを提供するため、ファイルの前処理後に停止します。ドキュメントには、プリプロセッサに適用できるその他のオプションがあります。

  • ここで-E述べたように、clangは も受け入れます。

  • Visual Studioには、/P (ファイルへの前処理)コンパイラ スイッチが用意されています。コンパイラに次のように指示します。

    C および C++ ソース ファイルを前処理し、前処理された出力をファイルに書き込みます。

    出力は、拡張子が .i のソース ファイルに基づくファイル名を持つファイルに書き込まれます。別のファイル名を指定するには、/Fi (プリプロセス出力ファイル名)コンパイラ スイッチを使用します。

  • -Eオプション (outputs to stdout) または-P(outputs to a file)のいずれかを渡すと、インテル C++ コンパイラーは前処理後に停止します。Windows では、これらはそれぞれスイッチ/E/Pスイッチになります。マニュアルには、これに関する詳細情報があります。

于 2016-01-14T03:28:20.687 に答える