2015-09-17 44 views
-1

这个问题是关于C++超过一年后,我无法解决或找到任何解决方案。我习惯于在C中为头文件和代码使用单独的文件,但是我在C++中遇到了问题:无论何时编辑头文件并尝试编译再次使用它的代码,编译器都不会注意标题上的变化。关于更新C++头文件

我所要解决的问题是单独编译头文件(.hpp)。有时我只是将它添加到g ++的源文件列表以及其他代码中,但是接下来会发生的是我必须执行两次命令(第一次给出错误,而不是第二次)。它还警告我,我在主文件中使用“一次编译指示”选项。

我知道这是非常错误的,所以我寻找了一个正确的方法来做到这一点,但没有成功。我注意到g ++生成“.gch”文件,但我不知道它们的目的是什么,尽管它们可能是相关的。

我怀疑问题是由于“.hpp”中的代码引起的。我知道(我认为)这样做的好方法是仅在头文件中定义原型,并将方法体写入单独的文件中,但有时(特别是在使用模板时)会产生更多问题。

+3

您的确在以各种错误的方式构建您的程序。尽管如此,我们无法对您的问题进行任何说明。编译器不能“注意到”所做的更改,因为当你编译它时,源文件以及它包含的任何东西都将被完全编译。更可能的是,您没有正确配置您的构建系统来解决源代码头依赖关系。如果您使用的是GNU Make,[本文档](https://www.gnu.org/software/make/manual/html_node/Automatic-Prerequisites.html)将帮助您;在此期间,我们不确定我们可以提供帮助。 –

+0

@LightnessRacesinOrbit我无法弄清楚如何让另一个用户看到我在做一件坏事,并在这里给你留言。我只是想让你知道你的个人资料中的艾丽西亚·希尔弗斯通引用了我的一周。谢谢你,先生。 – RyanP

+0

@RyanP:lol np; p –

回答

0

.gch是一个预编译的头文件,如果您明确地编译头文件,它会被创建。
然后编译器将使用该文件而不是实际的头文件(编译器不关心修改时间戳)。

执行rm *.gch并将所有标题永远留在编译命令之外。

(并且不要将模板实现放在.cpp文件中。)

+0

没关系好点 –