没有实现文件时包括头文件?

nod*_*nja 2 c++ compilation header-files

我正在查看 ncmpcpp 的源代码,我看到了这个。

#include <mpd/client.h>
Run Code Online (Sandbox Code Playgroud)

在该文件中是由 ncmpcpp 使用的函数。但这些只是标题。cpp 文件不是也必须存在于某处吗?我在同一目录中找不到它们。他们在哪里?

另外,当包含的内容被 < 和 > 包围时,我怎么知道去哪里看?

Luc*_*ore 5

如果它是第三方库,则很可能不会包含源代码。也不需要。标头中声明的所有符号(打算使用)都应该导出到.lib可能与标头一起提供的文件中。

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

cpp如果您想自己编译代码,您只需要这些文件,或者更一般地说,是实现文件。你没有。您可以使用只有头文件和二进制文件的模块。

当然,想到开源项目的例子,一般都是把所有的文件都包进去,但是如果是商业产品,为什么要发布源代码呢?是什么阻止任何竞争对手只是复制它并以新名称转售?

没有标准规则告诉在哪里查找由<>或分隔的标头"",但普遍的共识是<>用于系统标头(如stringiostream)和""自己的标头(myclass.h)。它只是告诉编译器首先查看哪里。