gpt4 book ai didi

c++ - 使用 C++ 库时如何避免包含相同的代码?

转载 作者:可可西里 更新时间:2023-11-01 18:36:04 25 4
gpt4 key购买 nike

编辑:我知道包含守卫,但包含文件不是这里的问题。我说的是实际编译和链接到静态库中的代码。

我正在用 C++ 为自己创建一个通用实用程序库。

我正在创建的功能之一,printFile , 需要 string , cout以及标准库的其他此类成员。

我担心当库被编译,然后链接到另一个也使用 string 的项目时和 cout , string 的代码和 cout将被复制:它将被预先链接到程序正在链接的库二进制文件中,并且它将再次链接到使用它们本身的项目。

库的结构如下:

  1. 有一个libname.hpp文件使用该库的程序员应该 #include在他的项目中。
  2. 对于每个函数 fnamelibname.hpp 中声明, 有一个文件 fname.cpp实现它。
  3. 所有 fname.cpp文件也 #include "libname.hpp" .
  4. 库本身编译成libname.a复制到 /usr/lib/ .

这会发生吗?
如果是,这到底是个问题吗?
如果是,那我该如何避免呢?

最佳答案

I'm worried that when the library is compiled, and then linked to another project that also uses string and cout, the code for string and cout will be duplicated

别担心:现代编译系统无法做到这一点。模板函数的代码被发送到目标文件中,但链接器会丢弃重复的条目。

关于c++ - 使用 C++ 库时如何避免包含相同的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14096631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com