c++ - 我的 Visual C++ 编译器编译了过时的源

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

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

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

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

最佳答案

intro.cpp 有头文件吗?这也在您的解决方案中吗?

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

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

我会尝试将您的代码重组为更传统的结构,其中 intro.cpp 包括 intro.h 和它需要的任何其他内容,chat.cpp 也是如此。那么你的编译单元是 intro.cpp 和 chat.cpp,它们依赖于相关的头文件,所以只要它们在 SOlution Explorer 中正确列出,一切都应该工作。您可以清理构建依赖项以避免重复并减少构建时间,一旦您让它按您希望的方式工作。

关于c++ - 我的 Visual C++ 编译器编译了过时的源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3798000/

相关文章:

c++ - 我可以直接从 C++ 中的 vector 元素指针获取索引吗?

c++ - 将对象传递给多线程对象Qt

c++ - 如何关闭 CPPUnit 中的单元测试

c++ - Sublime Text 2 作为 C++ IDE 有用吗? [与 Visual Studio ]

asp.net - 播放视频时服务器出错 : HTTP Error 404. 3

c++ - 将char数组转换为int数组c++

visual-studio - 有没有办法为 Visual Studio 创建自定义 HTML 验证架构?

xml - 使用 XML 文档部署 Web API 项目时生成服务器上的 "Access is denied"

c# - 我所有的 C# 2010 项目今天都停止加载

visual-studio-2010 - Visual Studio 2010 - Service Pack 1 Beta 回滚?