假设我有文件a.cpp
,b.cpp
并且a.cpp
在b.cpp
. 我修复了错误b.cpp
并重新编译——因为 Visual Studio 不必重新编译a.cpp
,它不会提醒我之前发现的警告。
我想以某种方式让警告持续存在;但是,我不希望它把警告视为错误(我希望它仍然编译/运行,即使有警告)。这可能吗?
假设我有文件a.cpp
,b.cpp
并且a.cpp
在b.cpp
. 我修复了错误b.cpp
并重新编译——因为 Visual Studio 不必重新编译a.cpp
,它不会提醒我之前发现的警告。
我想以某种方式让警告持续存在;但是,我不希望它把警告视为错误(我希望它仍然编译/运行,即使有警告)。这可能吗?
您可以进入项目设置并在 C/C++ 选项卡(类别:常规)中将所有警告设置为错误。
从本质上讲,你不走运。C++ 编译将丢弃所有错误和警告。因为它只重新编译缺少 .OBJ 文件的 .CPP 文件(即上次出现错误和失败的文件),所以您只会看到错误。
你有几个选择。在我的头顶上:
正如 Hernan 已经说过的,添加一个自定义构建步骤,该步骤会复制包含构建结果(警告)的中间文件。不确定如何为此命名,但您可以创建一个 bat 文件,该文件被称为自定义构建步骤。
为什么要保存警告超出了我的范围。将它们视为错误,或忽略它们或编译指示/禁用它们。
重建您的项目或仅重新编译 a.cpp 文件。警告由编译器输出,因此您不会收到当前编译中未包含的文件的警告。
您可以将当前构建输出保存到“输出”窗格并按 Ctrl+S(如果我不记得不好,默认为 output-build.txt。)
在您的项目设置中,我认为构建输出消息可以保存在文件中。检查它并告诉你的结果。
干杯
鉴于您不想重新编译导致警告的文件,您可能有一个选择是编写一个小实用程序,用于过滤编译器的输出以获取警告并将它们作为 //TODO 注释写入 .cpp 文件.
然后 IDE 会将它们放在待办事项列表中。
我不知道有什么开箱即用的方法,但它可能不会太难鞭打。
如果您不希望该实用程序与实际的源文件混在一起(我不确定我是否愿意),您可能希望让它将 //TODO 注释写入一个虚拟的“todo.cpp”文件并拥有它项目中的文件。然后它们会出现在待办事项列表中,由于文件只是注释,它不会影响构建。只需确保该实用程序很聪明,不会将重复项添加到列表中。可以编写一个宏来将您从 todo.cpp 行带到警告的相应实际位置。
我强烈建议在运行时尽可能多地发出警告,当然在你自己编写的所有代码中也是如此。在这里和现在修复警告要容易得多,而不是等到稍后再尝试一次性完成所有警告。
您希望将警告作为错误运行有几个原因:
我真的看不出任何不使用/WX(或-Werror)运行的正当理由。