在它自己的源文件中包含头文件
include header file in its own source file?
假设我有一些源代码MyAmoeba.cpp,以及相关的头文件MyAmoeba.h。在MyAmoeba.cpp中包含MyAmoeba.h被认为是好的还是坏的做法?(我假设它从来没有必要,除了可能在一些设计糟糕的情况下,头文件包含一个宏,使源文件的变化)
据我所知,这样做意味着如果你改变了MyAmoeba.cpp中的任何东西的签名,但忘记在MyAmoeba.h中这样做,那么错误将发生在编译阶段而不是链接阶段,但我不确定这是好/坏/无关紧要的事情。
我对c++相当陌生,顺便说一句,如果这个问题在任何方面都是无意义的(如果是,请指出给我)
编辑:我正在玩一个头文件,只包含函数声明,但没有类/结构/等定义。从其他来源和下面的答案来看,在我看来,当头文件只有声明时,没有必要在相关的源文件中包含头文件,但如果在头文件中有任何定义,那么它确实是必要的(因为你可以随意声明一些东西,但只定义一次,而且定义显然可以用来代替声明)。因此,源文件中的函数定义将同时算作我的声明)。
什么?
这几乎总是必要的,因此几乎总是这样做。
如果你没有声明,你应该如何提供定义?
你不能只写像
这样的代码void MyAmoeba::subdivide()
{
}
没有首先声明 MyAmoeba
类,因此编译器可以知道称为subdivide()
的方法确实是MyAmoeba::
空间的一部分。
UPDATE请参考这个问题来讨论声明和定义之间的区别
相关文章:
- 使用mongocxx驱动程序时包含头文件问题
- 如何为包含头文件的目标编写生成文件?
- 如何在 CMakeLists.txt Qt Creator 中包含头文件?
- 当包含头文件的文件不在根项目文件夹中时,如何包含它
- 在生成文件先决条件中包含头文件的原因
- My Project的属性配置正确,但Visual Studio仍然无法打开包含头文件
- 在 PostgreSQL C 扩展中包含头文件
- 是否可以在C++中以间接方式包含头文件
- 是否需要包含头文件?
- 我收到未声明的标识符错误,但我已包含头文件?
- 为什么我们需要构建一个提升库,仅仅包含头文件还不够吗,因为提升是模板
- C++:当顺序真正重要时,如何保证在项目中包含头文件的顺序
- 如何在C++中包含头文件时错误地重载
- 我在C++中无效使用不完整的类型类错误,如何正确包含头文件?
- 虚幻引擎4.16,C++包含头文件
- C++多次包含头文件
- 令牌之前的预期类名 '{' - 包含头文件和 CPP 文件
- 在.cpp中包含头文件会导致令人讨厌的错误
- 如何列出用于在Qt项目中包含头文件的所有路径
- 尽管包含头文件,但仍找不到嵌套命名空间