Visual Studio 2015 提供了在同一窗口中显示 Intellisense 错误的选项,该窗口还显示常规生成错误。我喜欢它,因为我什至不需要构建来查看代码的语法是否正确。
然而,该窗口还显示一个误报错误,该错误似乎与智能感知错误有关。有没有办法抑制特定代码区域或整个文件的智能感知错误?
我知道,这是一个老问题,但我刚刚对 Visual Studio 2019 / IntelliSense 有类似的抱怨,并找到了解决方案。
我的具体示例是 C++,涉及可变长度数组的使用。 Clang 支持/编译它们,我可以通过添加一个来抑制构建警告-Wno-vla
选项 (Properties -> C/C++ -> Command Line -> Additional Options
).
但是,IntelliSense 会忽略“-Wno-vla”,将 VLA 视为错误而不是警告。因此,代码及其错误列表中出现了红色曲线:E0028 expression must have a constant value
(这个错误号28在下面很重要)
关键是要记住 IntelliSense 使用不同的编译器前端,因此对于什么是“正确”的想法可能与您选择的构建编译器和选项不同。前端已获得许可EDG http://www.edg.com幸运的是,他们在这里记录了它的一些操作,包括命令行选项、编译指示等:C++ 前端 PDF http://www.edg.com/docs/edg_cpp.pdf
我不知道如何将他们的命令行选项专门定向到他们的前端,这似乎从项目中提取其选项,与构建编译器使用的选项相同......并且它对这些选项感到窒息,尤其是那些选项期望在空格后有一个参数(例如--diag_suppress 28
从来没有工作过)。
然而我什么could开始工作是前端特定的编译指示!因此这需要少量的不可移植代码。具体来说,我将以下内容放入我的顶级(“每个人都包含”)头文件之一中,并且效果很好:
#ifdef __INTELLISENSE__
#pragma diag_suppress 28
#endif
如果没有__INTELLISENSE__
条款,你还可以这样做:#pragma clang diagnostic ignored "-Wunknown-pragmas"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)