我正在开发一个C++项目,我已经将每个类实现为一个单独的.h文件和.cpp文件.我发现这不值得麻烦. - 我在两个文件之间来回编辑 - 它引起了很多不为人知的头痛(必须添加预先声明,显式导出模板化类) - 我没有看到直接的好处,我的代码库必然会保持相对较小(比如说<10,000行代码)和编译时间并不重要.
我的问题是双重的
a)在保持实施和原型分离方面是否有可能遗漏的好处?
b)如果没有,是否有任何免费工具或ide能够将cpp文件合并回头文件?
不要这样做.对于大多数简单的类,您希望公开该类以供其他地方使用,您应始终*在.h头文件中声明该类,并在文件中定义(代码).cpp.
然后,您可以将.h文件包含在要使用该类的任何位置(即实例化它).但是,链接器负责在.cpp单独编译代码之后"链接"代码.
我的问题是,"你还能怎么做?" 我看到很多n00bs犯的一个错误就是#include "foo.c.然后会发生什么,你不仅失去了独立编译,而且在链接时遇到问题,因为同一个类有多个定义.请记住,当你#include是一个文件时,它实际上就是你所说的那个文件的正文.
[*]这条规则当然有例外:
一个例外是模板类.这些必须完整地放在头文件中.原因是因为在使用类型参数实例化类之前不会生成实际代码.然后,编译器基本上"填充"具有所需类型的类的主体.由于该类型在此之前是未知的,因此无法单独编译并在以后进行链接.