合并头文件和cpp文件

时间:2012-06-27 19:41:17

标签: c++ header-files

我正在开发一个C ++项目,我将每个类都实现为一个单独的.h文件和.cpp文件。我发现这不值得麻烦。   - 我在两个文件之间来回编辑   - 它给我带来了许多意想不到的麻烦(必须添加预先声明,显式导出模板化类)   - 我没有看到直接的好处,我的代码库必然会保持相对较小(比如说< 10,000行代码)并且编译时间不大。

我的问题是两次

a)在保持实施和原型分离方面,我可能错过了哪些好处?

b)如果没有,是否有任何可以将cpp文件合并回头文件的免费工具或ide?

1 个答案:

答案 0 :(得分:9)

不要这样做。对于大多数简单的类,您希望公开该类以供其他地方使用,您应始终*在.h头文件中声明该类,并在.cpp中定义(代码)文件。

然后将.h文件包含在要使用该类的任何位置(即实例化它)。但是,链接器负责在单独编译.cpp之后“链接”代码。

我的问题是,“你还能怎么做?”我看到许多n00bs犯的一个错误是#include "foo.c。然后会发生什么,你不仅失去了独立的编译,而且在链接时遇到了问题,因为同一个类有多个定义。请记住,当你#include一个文件时,它实际上就是你所说的那个文件的正文。

[*]这条规则当然有例外:

一个例外是模板类。这些必须完整地放在头文件中。原因是因为在使用类型参数实例化类之前不会生成实际代码。然后,编译器基本上“填充”具有所需类型的类的主体。由于该类型在此之前未知,因此不能独立编译并在以后进行链接。