最近,我遇到了管理标头的方法。在互联网上找不到关于它的问题的很多信息,所以决定在这里问。
想象一下,您有一个程序,其中包含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
标头的方法是否存在一些实际问题?
答案 0 :(得分:3)
这是为了取悦迂腐的纯粹主义者和懒惰的极简主义者。如果所有子标题都以正确的方式完成,那么通过global.h
不会产生任何功能损害,只会增加编译时间。
Subheader有点像
#ifndef unique_token
#define unique_token
#pragma once
// the useful payload
#endif
答案 1 :(得分:0)
如果有所有源文件需要的公共头文件(如config.h),则可以这样做。 (但是像预编译头一样使用它......)
但是通过包含不必要的标题,实际上增加了编译时间。所以,如果你有一个非常大的项目,并且每个源文件包含所有标题,编译时间可能会很长......
除非必须,否则我建议不要包含标题。 即使您使用类型,但仅用于指针或引用(尤其是在标题中),更喜欢使用fwd声明而不是include。