在没有实现文件时包含头文件?
Including header files when there's no implementation file?
我在看ncmpcpp的源代码,看到了这一点。
#include <mpd/client.h>
该文件中有ncmpcpp使用的函数。但这些只是标题。cpp文件不是也必须存在于某个地方吗?我在同一目录中找不到它们。他们在哪里?
此外,当包含的内容被<和>,我怎么知道去哪里看?
如果是第三方库,则很可能不会包含源代码。也不需要它。标头中声明的所有符号(旨在使用)都应导出到可能随标头一起提供的.lib
文件中。
除非您有template
,它可以是内联的。
如果您想自己编译代码,您只需要cpp
文件,或者更一般地说,实现文件。但你没有。您可以使用只有标头和二进制文件的模块。
当然,我们会想到开源项目的例子,其中通常包括所有文件,但如果是商业产品,为什么要发布源代码?是什么阻止了任何竞争对手复制并以新名称转售?
没有标准规则告诉在哪里查找由<>
或""
定界的报头,但普遍的共识是<>
用于系统报头(如string
或iostream
),""
用于自己的报头(myclass.h
)。它只是告诉编译器先看哪里。
如果编译器可以链接到一个库(静态或动态链接),则不需要源文件,这些文件通常是.a
或.lib
文件(尽管很少需要.def
文件)。
有关搜索路径,请参阅MSVC的此项和GCC的此项。
相关文章:
- 使用mongocxx驱动程序时包含头文件问题
- 如何为包含头文件的目标编写生成文件?
- 如何在 CMakeLists.txt Qt Creator 中包含头文件?
- 当包含头文件的文件不在根项目文件夹中时,如何包含它
- 在生成文件先决条件中包含头文件的原因
- My Project的属性配置正确,但Visual Studio仍然无法打开包含头文件
- 在 PostgreSQL C 扩展中包含头文件
- 是否可以在C++中以间接方式包含头文件
- 是否需要包含头文件?
- 如何在不包含完整的文件系统头的情况下使用文件系统的类路径C++17?
- 我收到未声明的标识符错误,但我已包含头文件?
- 为什么我们需要构建一个提升库,仅仅包含头文件还不够吗,因为提升是模板
- C++:当顺序真正重要时,如何保证在项目中包含头文件的顺序
- 如何在C++中包含头文件时错误地重载
- 我在C++中无效使用不完整的类型类错误,如何正确包含头文件?
- 虚幻引擎4.16,C++包含头文件
- C++多次包含头文件
- 令牌之前的预期类名 '{' - 包含头文件和 CPP 文件
- 可以将标头文件包含在多个源文件中,而无需重复保护
- 有条件地将文件包含在C++标头中