单个标头,包括其他标头

时间:2014-02-26 21:22:29

标签: c++ c

最近,我遇到了管理标头的方法。在互联网上找不到关于它的问题的很多信息,所以决定在这里问。

想象一下,您有一个程序,其中包含main.c,以及其他来源和标题,例如:person.c, person.h, settings.c, settings.h, maindialog.c, maindialog.h, othersource.c, othersource.h

有时settings.c可能需要person.c和主maindialog.c

有时其他一些来源可能需要包含其他源文件。 通常可以在settings.c内进行:

//settings.c
#include "person.h"
#include "maindialog.h"

但是,我遇到过global.h并且在其中的方法:

//global.h
//all headers we need
#include "person.h"
#include "maindialog.h"
#include "settings.h"
#include "otherdialog.h"

现在,从每个其他源文件中,您只需要包含"global.h" 并且您已完成,您可以从各自的源文件中获取功能。 使用一个global.h标头的方法是否存在一些实际问题?

2 个答案:

答案 0 :(得分:3)

这是为了取悦迂腐的纯粹主义者和懒惰的极简主义者。如果所有子标题都以正确的方式完成,那么通过global.h不会产生任何功能损害,只会增加编译时间。

Subheader有点像

#ifndef unique_token
#define unique_token
#pragma once

// the useful payload

#endif

答案 1 :(得分:0)

如果有所有源文件需要的公共头文件(如config.h),则可以这样做。 (但是像预编译头一样使用它......)

但是通过包含不必要的标题,实际上增加了编译时间。所以,如果你有一个非常大的项目,并且每个源文件包含所有标题,编译时间可能会很长......

除非必须,否则我建议不要包含标题。 即使您使用类型,但仅用于指针或引用(尤其是在标题中),更喜欢使用fwd声明而不是include。