C++中头文件和库文件的关系是什么?

4

为什么我们需要同时将 includes 和 libs 添加到编译中?

为什么 libs 没有将所有内容都包含在其中?


你的问题不太清楚,但是你似乎很困惑。头文件不会被添加到编译中——它们在源代码和(可能)makefile 中。请发布你所拥有的内容(并且偶尔接受一个答案)。 - KevinDTimm
有趣的是,这个问题足够有趣,以至于在C++标准委员会中已经被讨论过...并且在C++11之后的更新中仍然存在争议。 - David Rodríguez - dribeas
3个回答

5

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

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

库本身是在运行时执行的已编译代码。在编译期间使用头文件允许您的编译器生成已知如何调用和与现有库代码通信的已编译代码。


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

那么它只是在编译时使用,运行时被忽略了? - symfony
3
所有的声明基本上只在编译时起作用。如果您编写自己的函数原型,那么在编译后的代码中没有任何反映。现在,函数的主体最好存在于某个地方,否则链接器会报错,但是被编译的是函数主体,而不是原型。 - Tyler McHenry

-1

我猜这是你处理你在 如何使#include <mysql.h>工作? 上所提问的方式吧。

不幸的是,我认为更好的解决方案是在将绝对所有内容发布到该网站之前,要么学习更多关于C++的知识,要么学习更多关于谷歌的知识。


2
看一下OP的其他问题...昨天有一个与extern相关的问题发生了同样的事情。是时候停止回答这个用户的问题了! - user123456

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接