在它自己的源文件中包含头文件

include header file in its own source file?

本文关键字:包含头 文件 源文件 它自己 自己的      更新时间:2023-10-16

假设我有一些源代码MyAmoeba.cpp,以及相关的头文件MyAmoeba.h。在MyAmoeba.cpp中包含MyAmoeba.h被认为是好的还是坏的做法?(我假设它从来没有必要,除了可能在一些设计糟糕的情况下,头文件包含一个宏,使源文件的变化)

据我所知,这样做意味着如果你改变了MyAmoeba.cpp中的任何东西的签名,但忘记在MyAmoeba.h中这样做,那么错误将发生在编译阶段而不是链接阶段,但我不确定这是好/坏/无关紧要的事情。

我对c++相当陌生,顺便说一句,如果这个问题在任何方面都是无意义的(如果是,请指出给我)

编辑:我正在玩一个头文件,只包含函数声明,但没有类/结构/等定义。从其他来源和下面的答案来看,在我看来,当头文件只有声明时,没有必要在相关的源文件中包含头文件,但如果在头文件中有任何定义,那么它确实是必要的(因为你可以随意声明一些东西,但只定义一次,而且定义显然可以用来代替声明)。因此,源文件中的函数定义将同时算作我的声明)。

什么?

这几乎总是必要的,因此几乎总是这样做。

如果你没有声明,你应该如何提供定义?

你不能只写像

这样的代码
void MyAmoeba::subdivide()
{
}

没有首先声明 MyAmoeba类,因此编译器可以知道称为subdivide()的方法确实是MyAmoeba::空间的一部分。

UPDATE请参考这个问题来讨论声明和定义之间的区别