C++ Intellisense 显示结构化绑定(bind)错误但代码编译

标签 c++ visual-studio c++17 intellisense

我已经使用 VS 很长时间了,在我看来它是一个不错的 IDE,但有时智能感知会中断并报告不存在的错误。通常这些会在一段时间后消失,或者在重建智能感知缓存后消失,但这次它实际上似乎被卡住了。这在我的 IDE 中的外观图像:(这是 VS2017)

Intellisense errors

当将鼠标悬停在作为“位置”的名称上时,我收到如下消息:class "Saturn::Components::Transform"has no member named "position",而它显然有一个,如下所示编译代码时清除,工作正常。

一段时间以来,我一直在到处更改设置,但我不知道如何解决这个问题。非常感谢任何帮助!

最佳答案

据我所知,与 Visual C++ 编译器使用的编译器前端不同,IntelliSense 是从不同的编译器前端(基于 EDG frontent )提供的。因此,有时会发生 IntelliSense 认为有效代码与 Visual C++ 编译器在实际编译代码时将接受的代码之间存在差异的情况。例如,当 Visual C++ 添加新的实验性功能时,IntelliSense 通常尚未更新以了解它们并将相应的代码标记为错误。这也是goes the other way ,作为 EDG 前端,至少在历史上,比 Visual C++ 有更好的标准一致性,所以 IntelliSense 可能会认为某些代码有效,而 Visual C++,当你实际编译代码时,提示(这比不过,在 Visual C++ 的最后几个版本中,这种情况越来越少了)。最重要的是,这些前端中的每一个都有自己独立的一组错误......

最有可能的是,您的结构化绑定(bind)所发生的情况是您正在使用的 VS 2017 版本中的 IntelliSense 根本不支持结构化绑定(bind)。据我所知,当他们在 VS 2017 Update 3(或大约那个时候)中引入该功能时,这曾经是一个问题。您可能需要考虑将您的 VS 2017 更新到更新的版本,因为我似乎无法在此处使用当前的 VS 2017(版本 15.9.11)重现此问题......

关于C++ Intellisense 显示结构化绑定(bind)错误但代码编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56091690/

相关文章:

c++ - 数字小于机器精度的安全算术?

c++ - 将统一 float 传递给顶点着色器 opengl

c# - 如何获取代码或堆栈跟踪?

c# - CSC : error CS2001: Source file '.NETPortable,Version=v4.5,Profile=Profile78.AssemblyAttributes.cs' could not be found

c++ - 是否有理由使用 std::conjunction/std::disjunction 而不是 "&&"/"||"上的折叠表达式?

c++ - 是否保证 char 以外的任何类型?

c++ - 查找未通过 4 和问题代码的测试用例

c++ - Visual Studio 2010 的 dword ptr [...] 问题

c++ - 我如何找到模板函数返回的类型

c++ - 演绎指南、模板和子对象 : which compiler is right?