首页 > 解决方案 > 当包含 .h 文件时,是否包含在 .cpp 文件中

问题描述

所以可以说我有一堆这样命名的文件:

现在foo.cpp包括goo.h

// foo.cpp

#include "goo.h"
//...
//...

我的问题是,如果我包含foo.hmain.cpp文件中,我可以访问文件中的定义goo.hmain.cpp?还是我需要包括goo.h在内main.cpp

// main.cpp
#include "foo.h"

int main() {
  // Can i access the definitions in goo.h here without including goo.h??
}

如果您需要进一步说明,请告诉我。蒂亚!

标签: c++

解决方案


如果我在 main.cpp 文件中包含 foo.h,我可以在我的 main.cpp 文件中访问 goo.h 中的定义吗?

取决于foo.h包含什么。如果它包括goo.h,那么您可以在技术上访问这些定义main.cpp。包含是一个传递的“操作”。如果c包括bb包括a,则间接c包括。a

如果foo.h不包含goo.h(直接或间接),则没有理由包含foo.h会导致goo.h包含。

包含 .h 文件时是否包含在 .cpp 文件中

不。

虽然包含是可传递的,但它不是对称的。foo.cpp包括foo.h,但foo.h不包括foo.cpp


请注意,依赖于传递包含的标头中的定义/声明通常是一种不好的做法。

或者我需要在 main.cpp 中包含 goo.h?

如果main.cpp你依赖于来自的定义/声明goo.h,那么你应该包括goo.hmain.cpp.


推荐阅读