gpt4 book ai didi

c++ - 处理可能包含未定义行为的项目

转载 作者:太空狗 更新时间:2023-10-29 23:44:10 25 4
gpt4 key购买 nike

我想知道如何在这种情况下进行操作。假设我有一个运行良好的大型 C++ 项目。

我怀疑此代码中可能存在一些 UB(因为在同一作者编写的不同项目中我发现了 UB)。

现在,假设我需要向该项目添加新功能。我害怕是因为:

  • 如果我使用新的编译器重新编译,如果代码中已经存在 UB,这会增加发生 UB 的风险。 (例如,新编译器可能不适用于旧编译器适用的 UB)。

通过目视检查(在我开始添加新功能之前)消除这个大型项目中的所有 UB 是否现实?

如果不是,那么我至少应该使用相同版本的编译器进行编译,对吗? (如果有 UB,以减少出现问题的机会)。

项目是在 Visual Studio 中完成的,所以我不知道是否有目标文件,在这种情况下,我可以保留目标文件不变,只修改文件中需要添加内容的部分 - 从而再次将 UB 风险降至最低.

在这种情况下应该采取什么行动?我认为这可能是很常见的情况。


我喜欢建议,即我在添加新代码之前使用新编译器测试项目,但即便如此 - 我们知道测试可能不会揭示 UB,不是吗?

最佳答案

按顺序,我会:

  1. 使用 -Wall(Windows 用户为 /W4)编译并修复错误。
  2. 编写测试(如果还没有的话)。
  3. 使用 valgrind 等工具检测问题并修复它们。
  4. 研究同步原语(如果正在使用),并尽可能使用现代范例。
  5. 记录代码并遵守风格指南。

我不会试图通过保留目标文件来避免问题。这是一个噩梦般的维护问题。

关于c++ - 处理可能包含未定义行为的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35078316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com