c++ - 当包含 .h 文件时,是否包含在 .cpp 文件中
问题描述
所以可以说我有一堆这样命名的文件:
main.cpp
: 包含 main() 函数foo.h
: 一些资源的声明foo.cpp
: 中声明的资源的定义foo.h
goo.h
: 其他资源的声明
现在foo.cpp
包括goo.h
// foo.cpp
#include "goo.h"
//...
//...
我的问题是,如果我包含foo.h
在main.cpp
文件中,我可以访问文件中的定义goo.h
吗main.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??
}
如果您需要进一步说明,请告诉我。蒂亚!
解决方案
如果我在 main.cpp 文件中包含 foo.h,我可以在我的 main.cpp 文件中访问 goo.h 中的定义吗?
取决于foo.h
包含什么。如果它包括goo.h
,那么您可以在技术上访问这些定义main.cpp
。包含是一个传递的“操作”。如果c
包括b
和b
包括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.h
在main.cpp
.
推荐阅读
- python - Pyarrow 在使用 pandas to_parquet() 时应用模式
- excel - VBA 连接到文件服务器上的另一个工作簿
- kotlin - 为什么对字节的算术运算在 kotlin 中返回一个 int?
- laravel - Laravel Eloquent 模型中的多个变异器
- sql - 如果 from 和 to date 为空,如何获取最近 7 天的数据?
- c# - 实时图表地理地图
- javascript - Sharepoint 2010 - jQuery CEWP 仅在编辑模式下加载
- ios - 如何在 iOS swift 中从 scn 文件中为子节点设置动画?
- docker - 在无 Internet 区域中独立设置 Docker swarm
- linux - Raspberry Pi 3 B+ 的 GIT 克隆失败