現在の 翻訳単位のコードがプリコンパイル済みヘッダーを使用している(または作成中の)かどうかをプリプロセッサが検出する方法はありますか?
---
私が今直面している実際の問題は、実質的にすべてのヘッダーファイルをプリコンパイルすることにより、 PCHを悪用しているプロジェクトです。
つまり、#includesから得ることができる明確な依存関係管理のどれも のどれもなく、コンパイル時間がひどいことを意味します。 実際にすべての変更が完全な再構築をトリガーします。
アプリケーションはただちに修正する方法ですが、一部の古いユーザーは がすべてのプリコンパイルが悪いことを信じることを拒否します。私はそれを最初に証明しなければなりません。
私はステップバイステップでそれを実行し、私の変更が古いPCHの方法でコンパイルされた コードに影響しないことを確認しなければなりません。
私の計画はifdefをPCH.hから外し、余裕を持ってPCH以外のバージョンで作業することです。プリコンパイル済みヘッダーの検出
#ifdef USES_PCH
#include "PCH.h"
#elif
// include only whats needed
#endif
私は、コマンドラインでUSES_PCHを定義避け、手動で非常にエレガントされていないからほか、苦痛だろう、ということ/ Yと 同期してそれを維持したいと思います。 と多くの設定があり、プロジェクトのデフォルトに従わないファイルがたくさんあります。
きっとプリプロセッサはすでに生成するか、プリコンパイル済みヘッダーを使用してことになっているかどうかを知っています。 *何も検出する必要はありません。代わりに、いくつかの 'ifdef'コマンドのように*処理されているコードがそれを検出できるかどうかを尋ねることを意味しましたか? –
はい、#ifdef __USES_PCHなどを実行したい – grimner
これで解決したい実際の問題は何ですか? – peterchen