VSCode/MinGW 智能感知不适用于 C++

Posted

技术标签:

【中文标题】VSCode/MinGW 智能感知不适用于 C++【英文标题】:VS Code/MinGW intellisence not working for C++ 【发布时间】:2018-03-10 14:09:12 【问题描述】:

我的头文件中有一个模板类,我还需要一个 .hpp 文件来实现函数。

问题在于 VS Code 或 MinGW。

在 VS 代码中:

我安装了微软的 C/C++ 扩展

这是我的 c_cpp_properties.json 文件:


"configurations": [
    
        "name": "Win32",
        "intelliSenseMode": "clang-x64",
        "includePath": [
            "$workspaceRoot",
            "C:/MinGW/lib/gcc/mingw32/6.3.0/include/c++",
            "C:/MinGW/lib/gcc/mingw32/6.3.0/include/c++/mingw32",
            "C:/MinGW/lib/gcc/mingw32/6.3.0/include/c++/backward",
            "C:/MinGW/lib/gcc/mingw32/6.3.0/include",
            "C:/MinGW/include",
            "C:/MinGW/lib/gcc/mingw32/6.3.0/include-fixed"
        ],
        "defines": [
            "_DEBUG",
            "UNICODE",
            "__GNUC__=6",
            "__cdecl=__attribute__((__cdecl__))"
        ],
        "browse": 
            "path": [
                "C:/MinGW/lib/gcc/mingw32/6.3.0/include",
                "C:/MinGW/lib/gcc/mingw32/6.3.0/include-fixed",
                "C:/MinGW/include/*"
            ],
            "limitSymbolsToIncludedHeaders": true,
            "databaseFilename": ""
        
    
],
"version": 3

这是我的 settings.json(如果需要):

    
    "files.associations": 
    "iostream": "cpp",
    "ostream": "cpp",
    "*.tcc": "cpp",
    "cctype": "cpp",
    "clocale": "cpp",
    "cstdint": "cpp",
    "cstdio": "cpp",
    "cstdlib": "cpp",
    "cwchar": "cpp",
    "cwctype": "cpp",
    "exception": "cpp",
    "initializer_list": "cpp",
    "iosfwd": "cpp",
    "istream": "cpp",
    "limits": "cpp",
    "new": "cpp",
    "stdexcept": "cpp",
    "streambuf": "cpp",
    "system_error": "cpp",
    "type_traits": "cpp",
    "typeinfo": "cpp",
    "fstream": "cpp"
    ,
    "C_Cpp.intelliSenseEngineFallback": "Enabled"
  

我已将文件目录包含在 Windows 的环境变量设置中。

当我打开问题窗口 intellisense 不适用于 .hpp 文件时,主要问题出在 VS Code 中。这发生在我和我所知道的另一个人身上。有谁知道解决办法吗?

我相信这就是我们所需要的一切。 (我已经包含了 VS Code 与编译器对话的所有内容)

【问题讨论】:

您下载了哪个 C++ 扩展?您应该安装“C/C++ for Visual Studio Code” 我安装了微软的 C/C++ 扩展 一切正常。您是否重新启动了 VS Code? C/C++ 扩展必须在重启后下载额外的二进制文件并且需要再次重启。 是的,我已经尝试禁用扩展、卸载并重新启动。但由于某种原因,只有 hpp 文件不起作用 不知道,有什么不对。我在“files.associations”中还有一个"*.cpp": "cpp",,但这无济于事。 【参考方案1】:

尝试换行

"C_Cpp.intelliSenseEngineFallback": "Enabled"

下面一行

"C_Cpp.intelliSenseEngine": "Default"

然后重启 VS Code。

【讨论】:

这似乎不起作用。我开始认为 .hpp 文件还没有实现智能感知。 (在 VS Code 中或尚未为 MinGW GCC 实现..) 在问题标签中?不在航站楼。如果我编译,那么我会得到错误(如果发生一些错误),但我在我的语句之后“忘记”了一个分号,并且在我编译之前我没有得到错误。出于某种原因,VS Code 无法检测到我的工作区中的问题 :'( 尝试将“*.hpp”:“cpp”添加到“files.associations”中。 由于某种原因 VS Code 无法检测到我的工作区中的问题 这是另一回事! IntelliSense 不适用于实时检测错误。 那是什么原因导致它不能即时检测到错误?【参考方案2】:

删除"name": "Win32".. 部分并将以下部分添加到"configurations"


            "name": "MinGW",
            "intelliSenseMode": "clang-x64",
            "compilerPath": "C:/MinGW/bin/gcc.exe",
            "includePath": [
                "$workspaceRoot",
            ],
            "defines": [
                "_DEBUG"
            ],
            "browse": 
                "path": [
                    "C:/MinGW/lib/gcc/mingw32/6.3.0/include",
                    "C:/MinGW/lib/gcc/mingw32/6.3.0/include-fixed",
                    "C:/MinGW/include/*"
                    "$workspaceRoot",
                ],
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            
        

它在带有 MinGW 的 Windows 上对我有用。

参考:https://github.com/Microsoft/vscode-cpptools/blob/master/Documentation/LanguageServer/MinGW.md

【讨论】:

以上是关于VSCode/MinGW 智能感知不适用于 C++的主要内容,如果未能解决你的问题,请参考以下文章

Flutter VSCode 智能感知不适用于单文件包

自动完成/智能感知不适用于 VSCode 中的 dart/flutter

Visual Studio 智能感知/自动更正适用于 C# 术语,但不适用于 Unity

vb6 中的智能感知不适用于 Interop 和 UnmanagedType.Struct [重复]

如何在 vscode 上获得 Firefox 扩展 API 的自动完成/智能感知功能?

Javascript Intellisense 不适用于功能参数 [关闭]