【问题标题】:Visual Studio Code intellisense, use g++ predefined macrosVisual Studio Code 智能感知,使用 g++ 预定义宏
【发布时间】:2018-06-30 14:09:49
【问题描述】:

我将 Visual Studio Code for c++ 与 MinGW 和 g++ 一起使用。我的代码使用了几个 g++ 预定义的宏。这些在编译器中运行没有任何问题,但 Intellisense 不了解宏,这会导致编辑器中出现一些误诊错误(和其他 Intellisense 问题)。

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

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

这允许我将它们插入到 c_cpp_properties.json 文件的“定义”属性中。不过,这个解决方案是一个 hack,如果我不小心,它可能会完全破坏这些宏的用途。我希望编译器和 Intellisense 能够跨多个开发平台进行协作,这看起来是一个相当复杂的设置。

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

【问题讨论】:

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


    【解决方案1】:

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

    如果你不能让它工作,我找到了一个功能来关闭基于宏的突出显示。在设置中,将"C_Cpp.dimInactiveRegions" 设置为 false。这并不理想,因为它会阻止所有变灰,包括像 if(0) {...} 这样的调试块,但它可能是一个临时修复,您可能会发现它不那么烦人。

    除此之外,请密切关注未来更新中的新增功能。当我发现任何关于此事的新发现时,我会尝试更新这篇文章。

    【讨论】:

      【解决方案2】:

      c_cpp_properties.json 中名为 compilerPath 的属性允许 IntelliSense 向编译器查询默认包含路径和定义。可能需要将 intelliSenseMode 设置为 gcc-x64 才能使其正常工作,因为这不是 Windows 上的默认设置。 (我目前没有Windows设置,所以暂时无法测试)

      【讨论】:

        猜你喜欢
        • 2021-01-07
        • 2016-04-12
        • 2018-02-24
        • 1970-01-01
        • 2016-02-27
        • 2014-11-25
        • 2016-06-27
        • 2021-03-03
        • 2018-09-05
        相关资源
        最近更新 更多