Visual Studio 2010-C++;编译时智能感知错误 有时候,当编译C++项目时,构建会通过说“构建成功”来成功。但是,若您单击错误列表,它可能会显示一些错误,例如“IntelliSense:不允许使用不完整类型”。 我的问题是,“IntelliSense”错误是什么?我应该关注输出可执行文件吗?

Visual Studio 2010-C++;编译时智能感知错误 有时候,当编译C++项目时,构建会通过说“构建成功”来成功。但是,若您单击错误列表,它可能会显示一些错误,例如“IntelliSense:不允许使用不完整类型”。 我的问题是,“IntelliSense”错误是什么?我应该关注输出可执行文件吗?,c++,visual-studio-2010,C++,Visual Studio 2010,IntelliSense错误不一定是真正的编译器错误。请记住,Intellisense是一个单独的部分编译器,专为速度高于精度而设计。它部分编译您的代码以帮助生成IDE补全,IDE也使用它来强调Visual Studio IDE中可能出现的错误。从VS2010开始的IntelliSense解析器是另一家公司的产品。爱迪生设计小组,在C++世界中非常有名,是唯一一个为C++ 03写前端的人,它符合标准100%。 但它与MSVC++编译器并非100%兼容。VS2010是训练车轮,他们一直在削减不兼容

IntelliSense错误不一定是真正的编译器错误。请记住,Intellisense是一个单独的部分编译器,专为速度高于精度而设计。它部分编译您的代码以帮助生成IDE补全,IDE也使用它来强调Visual Studio IDE中可能出现的错误。

从VS2010开始的IntelliSense解析器是另一家公司的产品。爱迪生设计小组,在C++世界中非常有名,是唯一一个为C++ 03写前端的人,它符合标准100%。 但它与MSVC++编译器并非100%兼容。VS2010是训练车轮,他们一直在削减不兼容。有些差异是非常基本的,例如,MSVC++使用一种不常见的方式在预处理器中执行宏替换。语言标准中从未规定过的细节,微软很早就承诺做出与其他人不同的选择。很难修复,太多的客户都依赖它


你可以看到这个问题好的一面。您的代码是不可靠的,如果您曾经将其移植到g++of clang,可能会很麻烦。如果需要帮助将其取消定位,只需问一个问题。

Intellisense错误不一定是真正的编译器错误。Intellisense是一个单独的编译器,它部分编译您的代码,以帮助创建IDE完成,并在Visual Studio IDE中为可能的错误加下划线。@drescherjm Intellisense本身不是完整的编译器。它严格用于分析,并且与实际的MSVC编译器有完全不同的代码基础,因为后者在编译过程中实际上并不构建AST。@drescherjm我认为回答这个问题很好。它很可能成为关于智能感知错误的无数问题的典范。@πάνταῥεῖ - 没关系,只要海报上说错误与Intellisense有关。很多时候,在没有编译错误的情况下,贴出“编译器错误”,但实际上是Intellisense问题。@PaulMcKenzie大多数时候,这些海报甚至没有提到Intellisense,只是给出了一个(链接到a)屏幕截图:-P。这很可能有助于复制这些错误。