編集: インクルード ガードについては知っていますが、インクルード ファイルはここでは問題になりません。私が話しているのは、静的ライブラリに焼き付けられる、実際にコンパイルされ、すでにリンクされているコードです。
私は C++ で自分用の汎用ユーティリティ ライブラリを作成しています。
私が作成している関数の 1 つは、printFile
、 requires string
、cout
および標準ライブラリの他のメンバーです。
ライブラリがコンパイルされてから、 and も使用する別のプロジェクトにリンクされるstring
と、とcout
のコードが複製されるのではないかと心配しています。プログラムがリンクされているライブラリバイナリで両方が事前にリンクされ、それら自体を使用するプロジェクトと再びリンクされます。string
cout
ライブラリは次のように構成されています。
libname.hpp
ライブラリを使用するプログラマーがプロジェクトで使用することになっているファイルが 1 つあります#include
。fname
で宣言されたすべての関数に対して、それを実装libname.hpp
するファイルがあります。fname.cpp
- すべての
fname.cpp
ファイルも#include "libname.hpp"
. libname.a
ライブラリ自体は にコピーされてコンパイルされ/usr/lib/
ます。
これは起こりますか?
はいの場合、それはまったく問題ですか?
はいの場合、どうすればこれを回避できますか?