【问题标题】:What's the relationship between header files and library files in c++?c++中的头文件和库文件有什么关系?
【发布时间】:2011-01-31 18:15:27
【问题描述】:

为什么我们需要在编译中同时添加包含和库?

为什么库不把所有东西都包装在里面?

【问题讨论】:

  • 您的问题不清楚,但您似乎很困惑。头文件未添加到编译中-它们位于源代码和(可能)makefile中。发布你所拥有的(并每隔一段时间接受一个答案)
  • 很有趣,这个问题很有趣,已经在 C++ 标准委员会中讨论过......并且在 C++11 之后的后续更新中仍然悬而未决

标签: c++ header


【解决方案1】:

头文件定义接口;库提供实现。

库的头文件将告诉编译器库提供的​​函数的名称和签名、库提供的变量的名称以及库提供的类的布局。

库本身是在运行时执行的编译代码。在编译期间使用标头可以让您的编译器生成知道如何调用现有库代码并与之通信的编译代码。

【讨论】:

    【解决方案2】:

    头文件(通常)只包含类和函数的声明。实际的实现是从 CPP 文件构建的。然后,您可以仅使用可用的标头声明链接这些实现。

    【讨论】:

    • 所以它只是用于编译时,而在运行时被忽略?
    • 所有声明本质上只是编译时的。如果您编写自己的函数原型,则编译代码中没有任何反映原型的内容。现在,函数 body 最好存在于某个地方,否则您的链接器会报错,但编译的是主体,而不是原型。
    【解决方案3】:

    我猜这是您处理您在How to make #include <mysql.h> work?提出的问题的方式

    不幸的是,我认为更好的解决方案是了解更多关于 C++ 的信息,或者了解更多关于 Google 的信息,然后再将所有内容发布到此站点。

    【讨论】:

    • 查看 OP 的其他问题......昨天与extern 相关的问题也发生了同样的事情。是时候停止回答该用户的问题了!
    猜你喜欢
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 2010-09-24
    相关资源
    最近更新 更多