我的Visual C++;编译器编译过时的源代码 我是初学者,开始使用微软Visual C++快车2010进行Windows编程。我已经创建了一个新的C++应用程序,使用的是本地代码,而不是托管或MFC。我让VisualStudio为我创建了基本的windows代码来创建一个带有简单菜单的窗口(chat.cpp)。我修改了这个文件,我能够正确编译并看到我的更改生效

我的Visual C++;编译器编译过时的源代码 我是初学者,开始使用微软Visual C++快车2010进行Windows编程。我已经创建了一个新的C++应用程序,使用的是本地代码,而不是托管或MFC。我让VisualStudio为我创建了基本的windows代码来创建一个带有简单菜单的窗口(chat.cpp)。我修改了这个文件,我能够正确编译并看到我的更改生效,c++,visual-studio,visual-studio-2010,visual-c++,native,C++,Visual Studio,Visual Studio 2010,Visual C++,Native,现在,我在解决方案中又添加了一个源文件(intro.cpp),它包含在我的头文件中,并从chat.cpp中调用。这似乎很好,但有一个问题。编译器似乎没有偶尔应用我的代码更改:我进行了各种编辑、重新编译,“旧”代码似乎正在运行。然后,过了一段时间,在我只做了一个小小的修改之后,编译器似乎“赶上”了,它运行了新代码,包括我之前所做的所有更改 有什么缓存吗?我需要告诉编译器哪些文件要编译,哪些文件要从对象文件链接吗?将文件添加到解决方案时是否出错?导入.cpp是否有头文件?这也在你的解决方案中吗 我很

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


有什么缓存吗?我需要告诉编译器哪些文件要编译,哪些文件要从对象文件链接吗?将文件添加到解决方案时是否出错?

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

我很难想象这样一个成熟的IDE在这个领域会有一个bug,所以我会先检查一下您的文件列表。确保解决方案资源管理器显示所有已添加和正在编辑的文件。这是VS用于确定需要重建的列表

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


我会尝试将您的代码重新构造为更传统的结构,其中intro.cpp包括intro.h和它需要的任何其他内容,chat.cpp也是如此。然后,您的编译单元是intro.cpp和chat.cpp,它们依赖于相关的头文件,因此只要它们在解决方案资源管理器中正确列出,所有这些都应该可以工作。您可以清理生成依赖项,以避免DUP,并在使其按您的意愿工作后减少生成时间。

我有一个“chat.h”文件,其中包括“chat.cpp”和“intro.cpp”文件。没有单独的“intro.h”文件。我不确定我是否正确地进行了文件分离,这显然是我自己的问题,而不是编译器的问题;我希望编译器知道如何处理这个问题。解决方案资源管理器在“源文件”列表下正确显示“intro.cpp”,就像它显示“chat.cpp”一样。