.h文件和.c文件中包含的区别

Rom*_*nov 1 c++ header include

#include.h文件中和在.c文件中执行a有什么区别?

例如,我有一个文件a.ha.c其中有一个class A。我使用class Aclass Bb.hb.c)。做一个include之间有什么区别:

#include "a.h"
Run Code Online (Sandbox Code Playgroud)

b.hVS b.c

She*_*man 5

通常,类定义通常在.h文件中,而实现则在.c(pp)文件中。

#include "a.h"在bc文件而不是bh文件中执行操作的一个好处是,每当ah更改时,不仅bc还会重新编译包含bh的任何其他文件。

而且,您有点不必要向使用bh的任何人公开B的实现细节。这个想法是bh不应包含对使用B类的人不感兴趣的其他信息(不是因为它是秘密的,而是因为人们不在乎而且您不想以此来打扰他们)。

无需强迫任何人(包括bh)也间接包含其他十几个.h文件(因为它们已#bh中包含),仅因为您碰巧在bc中使用了该文件即可,避免混乱。

因此,如果可能的话,最好进入#include "a.h"BC!

但这并不总是可能的。如果您仅在bc内使用A,并且在bh中没有对A的引用,则可以。另外,如果bh仅包含指向A的指针(即,作为成员,函数参数或返回值),但不包含“类型相关”引用,则也可以仅将其放在bh中:

class A;
Run Code Online (Sandbox Code Playgroud)

并仍然保留#include "a.h"在您的bc中,但是,如果对ah有更多的引用或依赖关系,那么包括bh在内的任何人都真的不能没有,那么#include "a.h"应该进入bh