【发布时间】:2010-10-06 13:53:06
【问题描述】:
我喜欢组织我的代码,所以理想情况下我希望每个文件一个类,或者当我有非成员函数时,每个文件一个函数。
原因是:
当我阅读代码时,我总是 知道我应该在哪个文件中找到 某些功能或类。
如果是一类或非成员 每个头文件的功能,然后我不会 当我包括一团糟
include一个头文件。如果我对一个函数做一个小的改动,那么只有那个函数需要重新编译。
但是,将所有内容拆分为多个头文件和多个实现文件会大大减慢编译速度。在我的项目中,大多数函数访问一定数量的模板化其他库函数。这样代码将被一遍又一遍地编译,每个实现文件一次。目前在一台机器上编译我的整个项目需要 45 分钟左右。大约有 50 个目标文件,每个目标文件都使用相同的昂贵编译头文件。
也许,每个头文件文件有一个类(或非成员函数)是否可以接受,但将许多或所有这些函数的实现放入一个实现文件,如下例所示?
// foo.h
void foo(int n);
// bar.h
void bar(double d);
// foobar.cpp
#include <vector>
void foo(int n) { std::vector<int> v; ... }
void bar(double d) { std::vector<int> w; ... }
同样,优点是我可以只包含 foo 函数或只包含 bar 函数,整个项目的编译会更快,因为 foobar.cpp 是 一个 文件,所以 @ 987654324@(这只是其他一些昂贵的编译模板结构的示例)必须只编译一次,而不是如果我分别编译 foo.cpp 和 bar.cpp 则编译两次。当然,我上面的理由 (3) 不适用于这种情况:在更改 foo(){...} 之后,我必须重新编译整个可能很大的文件 foobar.cpp。
我很好奇你的意见是什么!
【问题讨论】:
标签: c++ build-process compilation code-organization file-organization