Visual Studio 2010 - C++编译时IntelliSense错误

6
有时候编译 C++ 项目时,构建过程会顺利完成并显示“构建成功”。但是,如果你点击错误列表,可能会显示一些错误,比如“IntelliSense: incomplete type is not allowed”。 我的问题是,这个“IntelliSense”错误是什么意思?我需要担心输出可执行文件吗?

Intellisense错误并不一定是真正的编译器错误。Intellisense是一个独立的编译器,它部分编译您的代码,以帮助创建IDE补全,并在Visual Studio IDE中标出可能的错误。 - drescherjm
1
@drescherjm IntelliSense并不是一个完整的编译器。它仅用于分析,并且与实际的MSVC编译器有完全不同的代码库,因为后者在编译过程中实际上不会构建AST。 - sjdowling
1
我会说回答这个问题没问题。它可能会成为无数关于“智能感知错误”的问题的规范。 @drescherjm - πάντα ῥεῖ
@πάνταῥεῖ - 没问题,只要发布者说错误与Intellisense有关。太多时候,帖子声称存在“编译器错误”,但实际上并没有编译错误,而是Intellisense问题。 - PaulMcKenzie
1
@PaulMcKenzie 大多数时候这些海报甚至不提及_intellisense_,只是给出一个(链接到)屏幕截图 :-P。这可能会欺骗那些不了解的人。 - πάντα ῥεῖ
2个回答

6

Intellisense错误并不一定是真正的编译器错误。请记住,Intellisense是一个独立的部分编译器,旨在追求速度而非准确性。它部分地编译您的代码以帮助生成IDE完成,同时也被IDE用来下划线可能在Visual Studio IDE中出现的错误。


6

IntelliSense解析器自VS2010以来,是另一家公司的产品。 Edison Design Group(EDG)在C ++领域非常有名,因为他们是唯一编写符合C++03标准的前端的公司。

但它与MSVC ++编译器不是100%兼容的。 VS2010是初学者版,他们一直在消除不兼容性。 例如,MSVC ++使用一种不常见的方法来执行预处理器中的宏替换。 这是语言标准中从未指定过的细节,微软早期做出了与其他人不同的选择。 这很难修复,他们的许多客户都对此产生了依赖。

您可以从这个问题的积极方面看待它。 如果您将来需要转移到g ++或clang,则代码可能存在问题并且可能会引起麻烦。 如果您需要帮助使其正常运行,请提出相关问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接