我正在将Visual Studio Code for Mind和g++用于c++。我的代码使用了几个g++预定义的宏。它们可以在编译器中正常工作,但是Intellisense不了解宏,因此在编辑器中会引起一些误诊错误(以及其他Intellisense问题)。

我可以使用以下命令为g++的特定配置获取所有预定义的宏:

g++ -dM -E foo.cpp > defines.h

这使我可以将它们插入c_cpp_properties.json文件的“defines”属性中。但是,此解决方案是一个hack,如果我不小心的话,它可能会完全破坏这些宏的用途。我希望编译器和Intellisense在多个开发平台之间进行协作,这看起来很复杂。

有没有更好的方法让Intellisense知道g++预定义的宏?

最佳答案

据我所知,Intellisense正确处理预处理器宏的能力仍然有限。如果将CMake用于Makefile,则似乎可以告诉Intellisense拥有哪些宏,如下所示:auto-defined macros。我个人没有玩过这个游戏,但是值得研究。

如果您无法使用它,我发现了一个功能,可以关闭基于宏的突出显示。在设置中,将"C_Cpp.dimInactiveRegions"设置为false。这是不理想的,因为它会停止所有变灰,包括if(0) {...}之类的调试块,但它可能是临时修复,您可能会发现它不那么令人讨厌。

除此之外,请密切关注将来的更新中的新增功能。当我发现有关此问题的任何新发现时,我将尝试更新此帖子。

10-06 07:21
查看更多