包括标头和 Main.h



好的,不确定这是正确的方法还是正确的方法,但我已经看到了并开始使用它,假设您有 6 个文件

main.cpp
main.h
car.cpp
car.h
speed.cpp
speed.h
  • 第一 - 你应该有一个主.h吗?
  • 第 2 个 - 如果 main.h 有 #include car.h 和 #include speed.h,则在汽车/速度.cpp你只需要添加 #main.h (因此它会包括汽车/速度.h(
  • 第三 - 你应该走那条路吗?

#include简约的。包含背后的原因应该是,如果删除,代码将无法编译。

不要#include何时可以转发声明。如果"A类;"就足够了,请不要#include a.h

特别是,更喜欢在头文件中转发声明,避免嵌套包含生成高度耦合的大型包含文件。

另请参阅相关问题中的自给自足头文件。

1(仅当您需要向其他cpp文件公开main.cpp中的某些内容时,这取决于它的内容。

2(可能但不推荐。

3(出于多种原因(代码设计,编译时间等(,您希望根据需要尽可能少地包含。此外,它的约定是你的类有一个.h和一个.cpp,一个直接包含另一个。您还应该尝试在.cpp文件中包含标头,并尽可能避免包含标头。

否 通常没有main.h 。我相信最好在源文件中包含您需要的所有标头,而不仅仅是标头。如果您依靠标头来包含所需的所有内容,则可能会发生标头中的更改会破坏源文件。

第一 - 你应该有一个主.h吗?

很少。 main.cpp意味着它正在编译包含main()的翻译单元,这通常是其他较低级别的库的客户端代码,这些库不需要知道main()中的符号。 如果事情在你的设计中以某种方式变得循环,并且有充分的理由(巨大的时间压力?(不将你放的东西分成一个单独的.cpp,那么你最终可能会得到一个main.h。 这实际上应该只声明 main 中的符号.cpp其他翻译单元可能需要访问。 具体来说,它不应该包括car.h和/或speed.h,除非公开需要car.h或speed.h声明的main.h函数 - 例如,main.cpp中函数的声明,它从car.h或speed.h获取类型的参数。

2nd - 如果 main.h 有 #include car.h 和 #include speed.h,那么在 car/speed 中.cpp你只需要添加 #main.h(因此它将包括 car/speed.h(

如上所述,这几乎可以肯定是一个非常破碎的设计:main.cpp 预计将直接包含 car.h 和 speed.h,如果它不想这样做并且 car.h 和 speed.h 需要一个更高级别的标头,它应该根据它们的总体主题(例如 transport.h(命名,而不是以想要访问两者的特定客户端命名。 请记住,main.h 应该只存在于需要从 main.cpp 公开内容时才存在。

第三 - 你应该走那条路吗?

鉴于我上面解释的内容,可能不是。

拥有"main.h"并不常见 - 但肯定没有规则禁止它。

至于需要包括什么,以及你如何做到这一点,实际上取决于各自的班级做什么,他们需要彼此的什么知识。

通常认为以您描述的样式拥有"一个包含包含其他所有内容的包含文件"是一个坏主意。原因如下: 1.很难看出哪个源文件取决于哪个包含。 2. 你会得到更长的编译时间,因为编译器必须阅读一堆未使用的类定义。 3.你不能轻易地把"car.h"和"car.cpp"放在另一个没有"speed.h"的项目中。

您应该为要在代码中使用的源文件创建头文件。因此,不太可能 - 并非不可能 - 您必须制作main.h标头,因为在汽车.cpp和速度中.cpp您可能不包括在main.cpp中声明的函数。 相反,您可以在main中包含汽车.cpp和速度.cpp的功能.cpp因此您希望在主文件中包含它们的标头。

最新更新