我的Visual C ++编译器编译过时的源代码

时间:2010-09-26 13:33:35

标签: c++ visual-studio visual-studio-2010 visual-c++ native

我是初学者,开始使用Microsoft Visual C ++ Express 2010进行Windows编程。我使用本机代码创建了一个新的C ++应用程序,而不是托管或MFC。我让Visual Studio为我创建了基本的Windows代码来创建一个带有简单菜单的窗口(chat.cpp)。我修改了这个文件,我能够正确编译并看到我的更改生效。

现在我又向解决方案(intro.cpp)中添加了一个源文件,我将其包含在我的标题中并从chat.cpp中调用。这似乎工作得很好,但有一个问题。编译器似乎偶尔不会应用我的代码更改:我进行了各种编辑,重新编译,并且“旧”代码似乎正在运行。然后,过了一段时间,在我做了一个小小的修改后,编译器似乎“赶上”并运行新代码,包括我之前所做的所有更改。

有某种缓存吗?我是否需要告诉编译器要编译哪些文件以及哪些文件只能从目标文件链接?将文件添加到解决方案时,我是否犯了错误?

1 个答案:

答案 0 :(得分:1)

intro.cpp是否有头文件?在你的解决方案中也是这样吗?

我很难想象这个成熟IDE的这个区域在这里有一个错误,所以我会首先检查你的文件列表。确保解决方案资源管理器显示所有您添加并正在编辑的文件。这是VS用于确定重建的列表。

编辑:我承认我从你的描述中不清楚为什么它现在会失败。但是,通常头文件不包含代码,它以相反的方式工作(类模板头文件除外,例如STL头)。有一些关于利弊的讨论here。对我来说最有说服力的论点是支持包括头文件而不是反之亦然的代码是头文件包含接口,而代码文件包含实现

我会尝试将您的代码重构为一个更传统的结构,其中intro.cpp包含intro.h以及它需要的任何其他内容,以及chat.cpp也是如此。然后你的编译单元是intro.cpp和chat.cpp,它们依赖于相关的头文件,所以只要它们在SOlution Explorer中正确列出,一切都应该有效。您可以清理构建依赖项以避免重复,并在您按照自己的意愿工作后减少构建时间。