我在看ncmpcpp的源代码,我看到了这个。当没有实现文件时包含头文件?
#include <mpd/client.h>
在这个文件是其通过ncmpcpp使用的功能。但这些只是标题。不要将cpp文件存放在某个地方吗?我无法在同一个目录中找到它们。他们在哪?
此外,当包含的东西被<和>包围时,我怎么知道在哪里看?
我在看ncmpcpp的源代码,我看到了这个。当没有实现文件时包含头文件?
#include <mpd/client.h>
在这个文件是其通过ncmpcpp使用的功能。但这些只是标题。不要将cpp文件存放在某个地方吗?我无法在同一个目录中找到它们。他们在哪?
此外,当包含的东西被<和>包围时,我怎么知道在哪里看?
如果它是第三方库,很可能不包括源代码。它也不是必需的。在头文件中声明的所有符号(应该被使用)应该被导出到.lib
文件中,该文件可能与头文件一起提供。
除非你有template
s,它可以是内联的。
如果您想自己编译代码,则只需要cpp
文件或更一般的实现文件。你不这样做。您可以使用只有标题和二进制文件的模块。
当然,想到开源项目的例子,通常包含所有文件,但如果它是商业产品,为什么要发布源代码?什么让竞争对手不再复制它并以新名称转售?
还有,告诉到哪里寻找由<>
或""
分隔头没有标准的规则,但普遍的共识是,<>
是用于系统头文件(如string
或iostream
)和""
为自己的头(myclass.h
)。它只是告诉编译器首先看哪里。如果有一个库(静态或动态链接),它的编译器可以链接到,这些一般都是.a
或.lib
文件(虽然很少,你可能需要一个.def
文件)不需要
这来自我从源代码构建的东西,为什么不需要实现文件? – 2012-03-13 16:19:49
@javascriptninja:查找“动态链接” – 2012-03-13 16:32:37
当您构建模块时需要它们,这就是我所说的。 – 2012-03-13 18:29:11