gpt4 book ai didi

c# - C# 编译器不会在每次编译时立即报告所有错误吗?

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

当我编译这个项目时,它在“错误列表”窗口中显示了 400 多个错误,然后我转到错误站点,修复了一些错误,数字变成了 120 多个错误,然后在修复了更多错误之后,接下来再次编译报告,如 400+。我可以看到错误列表窗口中出现了不同的文件,所以我认为编译器会在一定数量的错误后中止?

如果是这样,这是什么原因?是否不应该收集项目中存在的所有错误,即使它们超过 10K+?

最佳答案

我一直想写一篇关于这个的博客文章。

您可能只是遇到了报告错误数量的一些硬编码限制。您也有可能遇到更微妙、更有趣的场景。

命令行编译器和 IDE 编译器中有很多尝试管理错误报告的试探法。既让用户易于管理,又让编译器更健壮。

简而言之,编译器的工作方式是尝试让程序通过一系列阶段,您可以在这里阅读:

http://blogs.msdn.com/b/ericlippert/archive/2010/02/04/how-many-passes.aspx

这个想法是,如果早期阶段出错,我们可能无法成功完成后续阶段,除非 (1) 进入无限循环,(2) 崩溃,或 (3) 报告疯狂的“级联”错误。所以会发生什么,你得到一个错误,你修复它,然后下一阶段的编译突然可以运行,它发现了更多的错误。

基本上,如果程序一团糟以至于我们甚至无法验证有关其类和方法的基本事实,那么我们就无法可靠地给出方法体的错误。如果我们不能分析 lambda 主体,那么我们就不能可靠地给出将其转换为表达式树的错误。等等;在很多情况下,后面的阶段需要知道前面的阶段已经完成且没有错误。

这种设计的好处是(1)你首先得到最“基本”的错误,没有很多嘈杂的、疯狂的级联错误,(2)编译器更健壮,因为它不不必尝试对语言的基本不变量被破坏的程序进行分析。不利的一面当然是你的场景:你有五十个错误,你修复了所有错误,然后突然又出现了五十个错误。

关于c# - C# 编译器不会在每次编译时立即报告所有错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4696906/

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