ヘッダー ファイルの内容がプリプロセッサによってソース コード ファイルに複数回挿入されるのを防ぐために、ヘッダー ファイルにヘッダー ガードを含めることを推奨する人がいるのを知っています。
ただし、次のシナリオを検討してください。
ファイルmain.cpp、stuff.cpp、およびcommonheader.hがあり、.hファイルにはヘッダー ガードがあるとします。
いずれかの.cppファイルがcommonheader.h複数回インクルードしようとすると、プリプロセッサはそれを停止し、オブジェクト コードにコンパイルした後、
main.ocommonheader.h の内容を1 回だけ含む。
stuff.ocommonheader.h の内容を1 回だけ含む。
commonheader の内容はファイル間で繰り返されていますが、同じ.oファイル内では繰り返されていないことに注意してください。
では、リンクの段階で何が起こるのでしょうか? .o ファイルが実行可能ファイルに融合されているため、commonheader の内容が繰り返されていないことを再度確認する必要があります。コンパイラはそれを処理しますか?そうでない場合、巨大なヘッダー ファイルを扱っているときに問題になりません。ファイル間でコードの繰り返しが発生し、実行可能ファイルのサイズが大きくなります。
質問のどこかで概念的な間違いを犯している場合は、修正してください。