为啥 C++ 中的 Visual Studio 不如 C# 中的智能? [关闭]
Posted
技术标签:
【中文标题】为啥 C++ 中的 Visual Studio 不如 C# 中的智能? [关闭]【英文标题】:Why Visual Studio in C++ is not as intelligent as it's in C#? [closed]为什么 C++ 中的 Visual Studio 不如 C# 中的智能? [关闭] 【发布时间】:2011-04-29 21:33:29 【问题描述】:我在 Visual Studio 2010 中使用 C++ 编写作业,我发现 Visual Studio 不如在 C# 中那么出色。没有智能感知,没有代码格式和愚蠢的错误消息负载,如果一个错误得到修复,它们可能会一起消失。
为什么?
【问题讨论】:
“大量错误消息,如果一个错误得到修复,它们可能会一起消失”这只是 C++ 编程的乐趣之一。至于其他方面,Visual Studio 确实为 C++ 提供了 IntelliSense、代码着色、格式化,甚至是有限的 IDE 内语法检查(“squiggles”);你确定你没有搞砸你的 Visual Studio 设置吗?如果您创建一个新的空 C++ 项目并添加一个 .cpp 文件,您会获得任何 IntelliSense 吗? 关于代码格式,工具 > 选项 > 文本编辑器,并确保 C/C++ 类别具有您在 C# 中使用的相同选项(就在上方)。 【参考方案1】:C++ 是一种比 C# 复杂得多的语言,这使得工具很难解析和提供 Intellisense 反馈。
【讨论】:
@Heandel C++ 如何只解析一次? C++ 必须处理宏...然后处理模板...然后处理其余部分...然后展开使用的模板并处理... @Heandel 哦,好吧,这很有道理。 @David Heffernan:有人对这个问题和所有答案投了反对票,并投票结束了这个问题。我不知道,但似乎只是为了伤害。 @Jack 很抱歉假设是你。 我认为用“复杂”这个词来形容它是错误的,但我同意这里的主要问题不是 IDE,而是语言和库本身。【参考方案2】:自从 .NET 出现以来,Microsoft 并没有在其 C++ 工具上投入太多精力。在很多方面,当前的 IDE 都比 Visual C++ 6 差。
这里是 Visual C++ 团队关于最近 C++ 相关工作以及为什么没有 C++/CLI 的 Intellisense 的博客文章:http://blogs.msdn.com/b/vcblog/archive/2011/03/03/10136696.aspx
【讨论】:
你在怀旧吗?你最近用过 VC 6 吗?我最近不得不参加一个旧项目。 VS 2010 在 C++ 的各个方面都好得多。 @Byron:你真的知道如何使用VC6吗?我最近使用过它,Kristopher 是绝对正确的:虽然 VS 2010 更漂亮,但就实际功能而言,VC 5/6明显更胜一筹。 @Kristopher Johnson:实际上,这个答案让我确信,C++ 比 C# 复杂得多。我认为这可能是一个商业原因,而不是语言的复杂性 @Jack 我认为 MS 并没有打算让 C++ 看起来很糟糕。当他们主要在 .net 上工作时,他们显然有一段时间对原生工具失去了兴趣。在某种程度上,这是可以理解的,因为 .net 曾经/现在是一项艰巨的任务。最近,他们在标准工作和 C++0x 支持方面非常努力地开发 C++ 编译器。也许他们在 IDE 上没有像他们可能的那样努力工作。但 C++ 确实是一个挑战,主要是因为历史的负担。 我同意将更多资源用于 C# 开发工具而不是 C++ 开发工具有合理的商业理由。而且微软并不孤单:我认为没有任何好的 IDE 对 C++ 的支持接近于对 Java、javascript、Python、Objective-C 或其他的支持。【参考方案3】:当前版本的 VC++ 确实具有 Intellisense,但效果不是特别好。如果您需要大量使用它,您可能需要考虑获取Visual Assist X 的副本。它改进了 Intellisense、语法高亮,并使 VS 总体上更好。
【讨论】:
是的,我知道有第三方解决方案,但我想知道为什么没有这些第三方工具与 C# 相比仍然愚蠢到这个级别。 @Jack 好的,我现在可以看到了。很抱歉中伤。 @Jack:不可能确切地说出原因。与大卫赫弗南不同,我认为这可能是故意的。我自己的猜测是,如果微软认为他们可以侥幸逃脱的话,他们很久以前就会停止销售大多数原生工具。照原样,他们尽最大努力引导人们使用 .NET,并保持原生工具刚好足以阻止第三方开发更好的工具。他们改进了他们的原生工具,但我认为只有当(例如)Qt 吓到他们时。 考虑到这些工具仍在内部广泛使用。显然没有办法验证您声称 MS 宁愿停止销售本机 C++ 工具的说法。但他们当然没有兴趣完全停止改进它们。它们几乎用于 Microsoft 的每个部门,从应用程序到系统软件,以开发本地程序。它与Qt无关,我不太喜欢这种阴谋论。 @Cody:他们经常使用内部的编译器,毫无疑问,他们对编译器进行了很多改进。关于他们在内部使用 IDE 进行 C++ 开发的程度还不确定——而且它不仅没有得到改进,而且还有一些有用的重要功能删除。【参考方案4】:c++ 是一种更复杂的语言,可以在 IDE 中很好地处理。宏使智能感知更加困难。它们还允许您在每次更改时创建大量错误:)
【讨论】:
以上是关于为啥 C++ 中的 Visual Studio 不如 C# 中的智能? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
为啥在同一个 Visual Studio 解决方案中生成 C++ 调试符号不匹配?
Visual Studio C++为啥不编译0b00000001 [重复]
为啥我们在 Visual Studio 2013 中引用 C++ 项目?
Visual Studio 2010在编译c++时为啥有错误也没有下划波浪线?
C++ 中的舍入值。为啥 printf、iostream 和 round 函数 [可能] 表现不同,具体取决于 Visual Studio 和 Windows 版本?