为什么不这样呢?
有经验的程序员的历史和期望,以及他们对大型程序的经验(见下面最后的陈述)
我认为在这一步中它应该首先进入标题
文件并将其中的#includes替换为它们的内容
关联的 .cpp 文件 ...
如果您接受使用 C++ 编码的工作,您的公司将向您提供编码标准,详细说明您想要遵循的指导方针或规则,或者在您偏离它们时为您的选择辩护。
您现在可能需要一些时间来查看可用的编码标准。例如,尝试学习 Google C++ Style Guide(我不是特别喜欢或不喜欢这个,它很容易记住)。一个简单的谷歌搜索也可以找到几个编码标准。添加“为什么要符合编码标准?”您的搜索可能会提供一些信息。
无需任何链接(一个包含所有内容的巨大文件)。
注意:这种方法不能消除与编译器工具或第三方提供的库的链接。我经常使用 -lrt 和 -pthread,有时也使用 -lncurses、-lgmp、-lgmpxx 等。
目前,作为一个实验,您可以手动实现巨型文件的方法(我经常为我的小型试验和私人工具的开发这样做)。
考虑:
如果 main.cc 有:
#include "./Foo.hh" // << note .hh file
int main(int argc, char* argv[])
{
Foo foo(argc, argv);
foo.show();
...
而 Foo.cc 有
#include "./Foo.hh" // << note .hh file
// Foo implementation
这是常见的模式(不,不是模式书模式),并且需要您将 Foo.o 和 main 链接在一起,这对于小型构建来说是微不足道的,但还有更多工作要做。
“小”特性让您可以使用#include 轻松创建“一个包含所有内容的巨型文件”:
将主要更改为
#include "./Foo.cc" // << note .cc also pulls in .hh
// (prepare for blow back on this idea)
int main(int argc, char* argv[])
{
Foo foo(argc, argv);
foo.show();
...
编译器在一个编译单元中查看所有代码。不需要本地 .o 的链接(但仍然是库链接)。
注意,我不建议这样做。为什么?
可能主要原因是我的许多工具都有 100 个对象(即 100 个 .cc 文件)。那个单一的“巨型”文件可能非常巨大。
对于大多数开发流失(即早期错误修复),只有一个或两个 .cc 文件得到更改。重新编译所有源代码可能会浪费您的时间和编译器的时间。
替代方案是开发人员已经学到的经验:
A) 编译数量少得多的已更改的 .cc(可能是一两个?),
B) 然后将它们与其他 100 个未更改的 .o 链接起来会更快地构建。
您的工作效率的一个主要关键是最大限度地减少您的编辑-编译-调试时间。 A 和 B 以及一个好的编辑器对于这个开发迭代很重要。