我目前正在处理包含大量源文件的程序。有时很难跟踪我已经拥有的库#include
d。从理论上讲,我可以创建一个名为Headers.h
的头文件,它只包含我需要的所有#include
语句,然后生成所有其他头文件#include "Headers.h"
。
为什么这是一个好/坏主意?
答案 0 :(得分:5)
<强>优点:强>
<强>缺点:强>
总的来说,我不推荐这种做法。上面列出的最后一个特别重要。
最佳做法是仅包含每个文件中代码所需的标头。
答案 1 :(得分:0)
在Harmic's answer的补充中,确实主要问题是构建系统(大多数构建器处理文件时间戳,而不是文件内容。omake
是一个值得注意的例外)。
请注意,如果您只关心许多依赖项,GNU make可以与autodependencies一起使用,并与传递给-M*的GCC选项一起使用(即g++
并且实际上是预处理器。)
但是,许多图书馆向其用户提供了一个标题(例如<gtk/gtk.h>
)
此外,单个头文件对预编译头文件更友好。特别是GCC wants a single header for precompilation。
另见ccache。
答案 2 :(得分:0)
跟踪所有必需的包含将更加困难,因为它们是从c源文件中抽象出来的,而不是真正支持模块化pus #harmic
的所有缺点