単一のコンパイル ユニットにすべての .cpp ファイルを含めることの潜在的な利点と落とし穴
特定の Visual Studio C プロジェクトでは、単一の ALL を組み込むという独特のアプローチが登場しています。 .cpp に他のすべての .cpp ファイルを含めます。この手法は、指定された「すべてリリース」構成と「すべてデバッグ」構成につながり、その実用性について疑問を引き起こします。
利点:
-
Swiftコンパイル: コンパイラーは、時間のかかる読み込みとコンパイルのプロセスを 1 回だけ実行するため、ビルドの手間が軽減されます。
-
高速リンク: 単一のコンパイル ユニットによりリンクが簡素化され、ビルド プロセスがさらに高速化されます。
落とし穴:
-
の難しさメンテナンス: 単一の巨大なコード ファイルの管理は扱いにくくなり、コードの可読性と柔軟性が妨げられる可能性があります。
-
匿名名前空間のアクセス可能性: すべての .cpp ファイルを 1 つのユニットに含めると、それぞれのファイル内で意図的に分離され、他のすべてのファイルからそのコンテンツにアクセスできるようになります。 .cpps.
-
名前空間の衝突: 異なる .cpp ファイルが同じ名前空間を使用すると、競合が発生する可能性があるため、名前空間の使用法に細心の注意が必要です。
-
増分値の削減buildability: 単一の .cpp ファイルを変更すると、ファイル全体の再コンパイルが必要になりますALL.cpp により、増分開発サイクルが遅くなります。
Unity ビルドは大規模で安定したビルドに優れていますが、その欠点により、コード変更が頻繁に行われる増分開発環境では有用性が制限される可能性があります。このアプローチが特定のプロジェクトに最適かどうかを判断するには、利点と落とし穴を比較検討することが重要です。
追加の洞察:
- Bruce Dawson が提供する洞察- 彼のブログでのこのトピックの詳細な分析: http://randomascii.wordpress.com/2014/03/22/make-vc-compiles-fast-through-Parallel-compilation/
- 詳細については、http://buffered.io/ を参照してください。 photos/the-magic-of-unity-builds/
以上がすべての .cpp ファイルを 1 つのコンパイル ユニットに結合するのは、C プロジェクトにとって賢明なアプローチですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。