【问题标题】:Vscode error squiggles not working as expectedVscode 错误曲线未按预期工作
【发布时间】:2021-08-04 17:07:35
【问题描述】:

我的 VScode 甚至没有为我检测到最简单的 c++ 语法错误:

显然 IntelliSense 工作正常,因为它检测到 test 函数中的错误,而下面函数中的错误被忽略。此外,如果我去掉第二个函数中的一个变量(这使得它与头文件中的声明不一致),IntelliSense 也将能够捕捉到这个错误,但任何错误出现在第二个函数的主体中函数被忽略。

完整的代码可以在这个repo中找到:

https://github.com/cmu-db/bustub

【问题讨论】:

  • 我已经添加了 C++ 标签,因为它可能是特定于它的。我认为宏会混淆 IntelliSense,导致它跳过那部分。你能说明它们是如何定义的吗?此外,我知道你想显示红色曲线,这需要一张图片,但如果你也将代码添加为文本会更好。谢谢!
  • 了解上下文也很重要。 init 是一个合法的 ISO 标识符(std::ios::init 和更多),还有一些其他的东西可以作为合法的类型名(我记得有 Init,不确定 init
  • 这只是我随机创建的一个错误,完全没有任何意义。我只是想证明一个事实,即只能检测到类函数之外的错误。
  • 如果你删除INDEX_TEMPLATE_ARGUMNTS会怎样
  • 不清楚这些宏到底是什么,内容可能是它发生的 100% 原因。例如。 INDEX_TEMPLATE_ARGUMNTS 实际上是 template 子句,类是模板类,那么该函数中的任何代码可以在实例化时是合法的,只有编译器可以决定。类是否具有基类,该基模板是否也很重要。 IS 分析器只是一个带有一些额外技巧的词法分析器,它不会重复编译器的过程

标签: c++ visual-studio-code intellisense


【解决方案1】:

您的Init 函数是模板函数的纯粹猜测。就我而言,IntelliSense 不会在模板函数中显示错误。

【讨论】:

猜你喜欢
  • 2015-03-25
  • 2018-04-27
  • 1970-01-01
  • 1970-01-01
  • 2014-03-26
  • 2014-01-09
  • 2019-11-07
  • 1970-01-01
  • 2022-01-12
相关资源
最近更新 更多