Visual C++ 智能感知比编译器“更智能”吗

问题描述 投票:0回答:3

我有以下场景。

我有一个基类,从中派生出一个类。一切看起来都很好,但是,每次我将鼠标光标悬停在基类的继承成员上时,智能感知都会显示它很好,EG BaseClass::SomeMember。但是,当我尝试编译时,编译器显示各种错误(它们与智能感知报告良好的变量和成员函数有关)。编译器说“它们不是有效的标识符”,它们不“属于全局名称空间”。有谁知道为什么会出现这种情况?

c++ inheritance intellisense
3个回答
8
投票

如果这是VC2010,那么是的,从某种意义上来说Intellisense更聪明。 他们转而使用 EDG 的编译器前端进行 IntelliSense,这是一种比 Microsoft 自己的编译器更严格、更符合标准的编译器。因此,在某些情况下,IntelliSense 和“真正的”编译器会不一致。

有时 IntelliSense 是错误的,因为它没有完整的图片(它在不同的上下文中运行,并且一次只处理一小部分代码),有时 Intellisense 是正确的,而编译器是错误的(就 C++ 而言)标准合规性),因为 EDG 的前端在这方面更好。


2
投票

不,智能感知绝对不会更聪明。你的代码坏了。针对代码的相关部分和您收到的错误消息提出一个单独的问题。


1
投票

这取决于你对“更聪明”的定义。 智能感知不是一个成熟的编译器,但它内置了各种启发式方法,以帮助它处理无效代码。 如果没有这些,那就完全没用了。

但这些启发法最终只是猜测;有时他们会误导或错误。

© www.soinside.com 2019 - 2024. All rights reserved.