【发布时间】:2021-08-04 17:07:35
【问题描述】:
我的 VScode 甚至没有为我检测到最简单的 c++ 语法错误:
显然 IntelliSense 工作正常,因为它检测到 test 函数中的错误,而下面函数中的错误被忽略。此外,如果我去掉第二个函数中的一个变量(这使得它与头文件中的声明不一致),IntelliSense 也将能够捕捉到这个错误,但任何错误出现在第二个函数的主体中函数被忽略。
完整的代码可以在这个repo中找到:
【问题讨论】:
-
我已经添加了 C++ 标签,因为它可能是特定于它的。我认为宏会混淆 IntelliSense,导致它跳过那部分。你能说明它们是如何定义的吗?此外,我知道你想显示红色曲线,这需要一张图片,但如果你也将代码添加为文本会更好。谢谢!
-
了解上下文也很重要。
init是一个合法的 ISO 标识符(std::ios::init和更多),还有一些其他的东西可以作为合法的类型名(我记得有 Init,不确定init) -
这只是我随机创建的一个错误,完全没有任何意义。我只是想证明一个事实,即只能检测到类函数之外的错误。
-
如果你删除
INDEX_TEMPLATE_ARGUMNTS会怎样 -
不清楚这些宏到底是什么,内容可能是它发生的 100% 原因。例如。
INDEX_TEMPLATE_ARGUMNTS实际上是template子句,类是模板类,那么该函数中的任何代码可以在实例化时是合法的,只有编译器可以决定。类是否具有基类,该基模板是否也很重要。 IS 分析器只是一个带有一些额外技巧的词法分析器,它不会重复编译器的过程
标签: c++ visual-studio-code intellisense