4

私は最近、大規模なプロジェクトをコンパイルするときに (私は Audacity ソースで遊んでいます)、他の多くのファイルによって参照されているファイルを変更すると、たとえば数十個の他のファイルで参照されているツールバー ウィジェットを変更すると、コンパイルが発生することに気付きました。非常に時間がかかります。そのようなファイルを微調整またはデバッグする必要がある場合、各コンパイル サイクルを完了するのに数分以上かかることがあります。

ツールバーを参照するファイルでポインタを使用する場合、コンパイラはクラスへの参照を含む各ファイルを再コンパイルする必要がありますか?

そうでない場合でも、これらのファイルを意図的にコンパイルしますか?

既存の言語またはフレームワークで、インスタンスではなくクラスのプロトタイプへのポインターを持つことは可能ですか?

4

2 に答える 2

4

インターフェイスを変更すると、できることはあまりありません。再コンパイルする必要があります。ただし、コードがPIMPl 設計パターンを使用して設計されている場合、通常、実装の変更によって多くの再コンパイルが発生することはありません。

ポインターを操作する場合でも、コンパイラーは通常、指しているオブジェクトのサイズを知る必要があることに注意してください。PIMPL パターンは、「実際の」オブジェクトをさらに別のポインターの背後に隠します。

于 2013-08-17T10:25:55.393 に答える
1

はい。ただし、ファイルが make ファイルでどのように供給されているかによって異なります。定義済みのインターフェイスとファクトリ クラスを適切に使用すると、インターフェイス ヘッダー ファイルを変更した場合にのみ、他のモジュールを再構築する必要があります。したがって、モジュールのヘッダーやソースを変更しても、モジュールを再構築する必要はありません。

ポインターの作成は、ポインターが実際のインスタンスの作成を処理するファクトリを介して作成され、ポインターが抽象インターフェイス型である場合にのみ機能します。

つまり、インターフェイス ヘッダーを含め、make ファイルの依存関係を適切に変更して、モジュールに直接依存しないようにする必要があります。

于 2013-08-17T09:49:25.283 に答える