2012-03-13 77 views
1

我在看ncmpcpp的源代码,我看到了这个。当没有实现文件时包含头文件?

#include <mpd/client.h> 

在这个文件是其通过ncmpcpp使用的功能。但这些只是标题。不要将cpp文件存放在某个地方吗?我无法在同一个目录中找到它们。他们在哪?

此外,当包含的东西被<和>包围时,我怎么知道在哪里看?

回答

4

如果它是第三方库,很可能不包括源代码。它也不是必需的。在头文件中声明的所有符号(应该被使用)应该被导出到.lib文件中,该文件可能与头文件一起提供。

除非你有template s,它可以是内联的。

如果您想自己编译代码,则只需要cpp文件或更一般的实现文件。你不这样做。您可以使用只有标题和二进制文件的模块。

当然,想到开源项目的例子,通常包含所有文件,但如果它是商业产品,为什么要发布源代码?什么让竞争对手不再复制它并以新名称转售?

还有,告诉到哪里寻找由<>""分隔头没有标准的规则,但普遍的共识是,<>是用于系统头文件(如stringiostream)和""为自己的头(myclass.h )。它只是告诉编译器首先看哪里。如果有一个库(静态或动态链接),它的编译器可以链接到,这些一般都是.a.lib文件(虽然很少,你可能需要一个.def文件)不需要

+0

这来自我从源代码构建的东西,为什么不需要实现文件? – 2012-03-13 16:19:49

+0

@javascriptninja:查找“动态链接” – 2012-03-13 16:32:37

+0

当您构建模块时需要它们,这就是我所说的。 – 2012-03-13 18:29:11

2

源文件。

有关搜索路径,请参见this用于MSVC,this用于GCC。