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

前端之家收集整理的这篇文章主要介绍了使用C库时如何避免包含相同的代码?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
编辑:我知道包含警卫,但包含文件不是问题.我正在谈论实际编译和已链接代码,这些代码被烘焙到静态库中.

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

我正在创建的函数之一printFile需要string,cout和标准库的其他此类成员.

我担心在编译库时,然后链接到另一个也使用字符串和cout的项目时,字符串和cout的代码将被复制:它将在程序所链接的库二进制文件中预先链接,它将再次与使用它们的项目相关联.

该库的结构如下:

>有一个libname.hpp文件,使用该库的程序员应该在他的项目中进行#include.
>对于在libname.hpp中声明的每个函数fname,都有一个文件fname.cpp来实现它.
>所有fname.cpp文件也包含#include“libname.hpp”.
>库本身编译成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++相关文章