C++ 为什么在c+中包含头文件+;而不是整个图书馆

C++ 为什么在c+中包含头文件+;而不是整个图书馆,c++,file,header,libraries,C++,File,Header,Libraries,我一直想知道为什么没有人会包含整个库而不是一个头文件。这是为了减少冗余。或者一些内存优化概念。我喜欢了解编程中的这些小基础知识。请有人给我解释一下。谢谢 为什么任何人都不包括整个库,而只是一个标题 文件是为了减少冗余吗 包括整个库(即标题和源)将更加冗余。当它现在工作时,您就有了库本身(.lib、.dll、.so,随便什么),它有已编译的代码。您还有仅包含定义的标题。当您编写自己的代码时,您需要这些定义来了解库中有哪些可以使用的内容。编译应用程序时,将使用库文件中已编译的代码。因此,您不必每次使

我一直想知道为什么没有人会包含整个库而不是一个头文件。这是为了减少冗余。或者一些内存优化概念。我喜欢了解编程中的这些小基础知识。请有人给我解释一下。谢谢

为什么任何人都不包括整个库,而只是一个标题 文件是为了减少冗余吗

包括整个库(即标题和源)将更加冗余。当它现在工作时,您就有了库本身(.lib、.dll、.so,随便什么),它有已编译的代码。您还有仅包含定义的标题。当您编写自己的代码时,您需要这些定义来了解库中有哪些可以使用的内容。编译应用程序时,将使用库文件中已编译的代码。因此,您不必每次使用库时都自己编译它

相反,如果要使用完整的库源代码,则必须从头开始编译它们。除了不方便外,这还可能是:

  • 非常耗时:如果建造图书馆需要5个小时怎么办
  • 很难做到:如果库有100个依赖项,并且您需要构建/配置许多其他东西才能编译它,该怎么办


    • 库包括一堆文件,在我们的程序中只需要很少的文件。例如,当我们编写一个普通的c程序时,我们不需要加载Math.h头文件,因为这个头文件包含在数学运算中。包含这些文件会增加程序的总体编译时间。因此,最好只包含程序中需要其函数的头文件,而不是包含整个库。

      您需要包含声明的头文件,并针对库(
      .lib
      .dll
      )进行实现(除非您使用的是只包含头的库)。否则,您将有大量未解析的外部对象,因为您的类和函数都没有定义。还有其他原因:库的源代码(如果有)可能很大,并且您不希望每次编译程序时都编译整个库。更多信息。是的,再加上一个事实,即有些人不希望其他人看到他们的代码和库的实现。因此,他们只向您提供使用函数的头,但无法看到函数的实现方式曼蒂德。(你知道封闭源码的人)