0

我正在使用 Visual Studio IDE 和 VC++ 编译器编写一个简单的 C++ 应用程序。

在这个应用程序中,我有一个错误的文件,它也会影响其他文件。当我编译它时,正如预期的那样,我得到了错误。现在,如果我从我的项目中删除对该文件的所有引用,然后运行它,编译器仍然会在错误中退出。在编译消息中,我看到了错误文件的文件名。防止这种情况发生的唯一方法是删除该文件的所有内容,或者删除该文件,然后重新编译它。

我的猜测是,因为 VC++ 是“智能的”,它可以保存编译,并且当它们不受影响时,它不会重新编译它。但是因为错误的文件会影响其他文件,所以一些编译错误(不是全部)会一直存在。

有谁知道如何禁用这种行为?

4

3 回答 3

0

要重新编译所有文件,您可以重新构建所有文件,或进行干净的构建。是的,如果事情没有改变,VC++ 会保存编译,它可能会说是最新的。我不认为你可以禁用它,但一个干净的构建应该能够解决它。如果这是整个问题,还要检查它是如何链接事物的,在那里你应该能够删除对文件的引用。

构建应该在构建选项卡下。

于 2013-08-01T17:39:23.163 回答
0

你能显示错误吗?

如果文件包含实际的功能代码,那么修复编译错误?如果文件不包含功能代码,那么它在您的项目中做了什么。

我希望这个“错误”文件是包含在其他 c++ 文件中的头 (.h) 文件,因此当它尝试编译 c++ 文件时,它会为每个 c++ 文件生成一个错误(或更多错误)。如果您只是从 IDE 项目中删除该文件;编译器仍将包含该文件(因为它仍然存在于磁盘上);并将继续产生错误。

如果您实际上删除了磁盘上的文件,那么您将遇到其他类型的错误。

在所有情况下,只需修复编译错误。

于 2013-08-01T17:40:07.330 回答
0

MSBuild 和 Visual C++ 编译器非常适合在您进行更改(例如添加或删除文件)时生成正确的二进制文件。即使没有完全重建,编译的可执行文件也有可能是正确的。如果您看到意外行为,很可能是由以下原因之一引起的:

  1. 在运行之前检查 Visual Studio 是否已配置为构建您的项目。检查Tools → Options... → Projects and Solutions → Build and Run下的以下选项:

    • 构建之前:保存所有更改
    • 在运行时,当项目过期时:“提示构建”或“始终构建”
    • 运行时,发生构建或部署错误时:“提示启动”或“始终启动”
  2. 如果 Visual Studio 询问您是否要运行旧版本的程序,您可能通过删除文件引入了编译错误,因此在您更正之前编译的二进制文件肯定会过期。

  3. 如果您的项目包含直接或间接#include "yourRemovedFile"的文件,则从项目中删除该文件可能无效。

  4. Visual Studio 错误列表独立于编译器报告问题。您可能会看到报告的旧错误不再与您的项目相关,但尚未从 UI 中清除。在这些情况下,当您运行程序时,您仍然会得到相同的结果。您还可以通过重新启动 Visual Studio 并查看错误消息是否仍然存在来查看这是否是您的问题。

于 2013-08-01T18:05:26.227 回答