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

时间:2014-06-04 15:20:16

标签: c++

说我有一些源代码MyAmoeba.cpp,带有相关的头文件MyAmoeba.h。在MyAmoeba.cpp中包含MyAmoeba.h是不错的做法? (我假设它从来没有必要,除了可能在一些设计糟糕的情况下,头文件包含一个对源文件进行更改的宏)

据我所知,执行上述操作意味着如果您更改MyAmoeba.cpp中的任何内容的签名,但忘记在MyAmoeba.h中执行此操作,则错误将在编译阶段发生,而不是在编译阶段链接阶段,但我不确定这是好/坏/不相关的事情。

我对c ++ btw相当新,如果这个问题无论如何都是荒谬的(如果是的话请指出我)

编辑: 我正在玩一个只包含函数声明的头文件,但没有类/ struct / etc定义。从其他来源和下面的答案,在我看来,当头文件只有声明时,没有必要在相关的源文件中包含头文件,但如果头文件中有任何定义,那么它确实必要的(因为您可以根据需要多次声明,但只定义一次,并且显然可以使用定义代替声明,因此源文件中的函数定义将同时计为我的声明)。

1 个答案:

答案 0 :(得分:8)

什么?

它几乎总是必要的,因此几乎总是如此。

如果您没有声明,那么您应该如何提供定义?

您不能只拥有像

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

没有第一个声明 MyAmoeba类,因此编译器可以知道名为subdivide()的方法确实是{{1}的一部分空间。

更新 Please see this question for a discussion about the difference between declarations and definitions