繁体   English   中英

Visual Studio代码:C / C ++:显示的标头/包含文件的多个定义; 怎么修?

[英]Visual Studio Code: C/C++: Multiple definitions for a header/include file shown; how to fix?

我在Windows上使用mingw64-5.4.0的VSCode 1.37.1。 我已按照https://code.visualstudio.com/docs/cpp/config-mingw上的VSCode C ++配置教程进行操作,但是在解析头文件位置时遇到问题。 在代码编辑器中,如果将光标放在“ <iostream>”上,然后按F12键,则转到该文件。 但是,如果将光标放在“ <vector>”上并按F12,则会弹出一个弹出窗口,显示三种可能的分辨率。 请参见下面的屏幕截图。

我可以选择手动选择正确的文件并打开它,但是下次我通过F12打开相同的文件时,它将再次询问。

VSCode已经检测到正确的包含路径(请参见下文),并且正确的文件仅存在于其中一个文件中,因此它应该已经具有所有必需的信息。

我的问题是:如何让VSCode根据包含路径确定自动打开正确的文件,而不是像这样提示我?

屏幕截图:

带有多个定义的VSCode弹出窗口的屏幕快照

通过使用“ C / C ++:Log Diagnostics”面板命令,我发现VSCode已检测到正确的包含路径(与命令提示符下的“ g ++ -v empty.c”相比)。 完整的诊断信息包括:

-------- Diagnostics - 8/28/2019, 10:32:51 PM
Version: 0.25.0
Current Configuration:
{
    "name": "Win32",
    "includePath": [
        "${workspaceFolder}/**"
    ],
    "defines": [
        "_DEBUG",
        "UNICODE",
        "_UNICODE"
    ],
    "windowsSdkVersion": "10.0.15063.0",
    "compilerPath": "D:/opt/mingw64-5.4.0/bin/g++.exe",
    "cStandard": "c11",
    "cppStandard": "c++17",
    "intelliSenseMode": "gcc-x64",
    "compilerArgs": [
        "-m64"
    ],
    "browse": {
        "path": [
            "${workspaceFolder}/**"
        ],
        "limitSymbolsToIncludedHeaders": true
    }
}
Translation Unit Mappings:
[D:\wrk\learn\vscode\cpphello\helloworld.cpp]:
    D:\WRK\LEARN\VSCODE\CPPHELLO\HELLOWORLD.CPP
[D:\opt\mingw64-5.4.0\x86_64-w64-mingw32\include\c++\debug\vector]:
    D:\OPT\MINGW64-5.4.0\X86_64-W64-MINGW32\INCLUDE\C++\DEBUG\VECTOR
Translation Unit Configurations:
[D:\wrk\learn\vscode\cpphello\helloworld.cpp]:
    Process ID: 9088
    Memory Usage: 19 MB
    Compiler Path: D:/opt/mingw64-5.4.0/bin/g++.exe
    Includes:
        D:\OPT\MINGW64-5.4.0\LIB\GCC\X86_64-W64-MINGW32\5.4.0\INCLUDE
        D:\OPT\MINGW64-5.4.0\LIB\GCC\X86_64-W64-MINGW32\5.4.0\INCLUDE-FIXED
        D:\OPT\MINGW64-5.4.0\X86_64-W64-MINGW32\INCLUDE
        D:\OPT\MINGW64-5.4.0\X86_64-W64-MINGW32\INCLUDE\C++
        D:\OPT\MINGW64-5.4.0\X86_64-W64-MINGW32\INCLUDE\C++\X86_64-W64-MINGW32
        D:\OPT\MINGW64-5.4.0\X86_64-W64-MINGW32\INCLUDE\C++\BACKWARD
    Defines:
        _DEBUG
        UNICODE
        _UNICODE
    Standard Version: c++17
    IntelliSense Mode: gcc-x64
    Other Flags:
        --g++
        --gnu_version=50400
[D:\opt\mingw64-5.4.0\x86_64-w64-mingw32\include\c++\debug\vector]:
    Process ID: 10728
    Memory Usage: 33 MB
    Compiler Path: D:/opt/mingw64-5.4.0/bin/g++.exe
    Includes:
        D:\OPT\MINGW64-5.4.0\LIB\GCC\X86_64-W64-MINGW32\5.4.0\INCLUDE
        D:\OPT\MINGW64-5.4.0\LIB\GCC\X86_64-W64-MINGW32\5.4.0\INCLUDE-FIXED
        D:\OPT\MINGW64-5.4.0\X86_64-W64-MINGW32\INCLUDE
        D:\OPT\MINGW64-5.4.0\X86_64-W64-MINGW32\INCLUDE\C++
        D:\OPT\MINGW64-5.4.0\X86_64-W64-MINGW32\INCLUDE\C++\X86_64-W64-MINGW32
        D:\OPT\MINGW64-5.4.0\X86_64-W64-MINGW32\INCLUDE\C++\BACKWARD
    Defines:
        _DEBUG
        UNICODE
        _UNICODE
    Standard Version: c++17
    IntelliSense Mode: gcc-x64
    Other Flags:
        --g++
        --gnu_version=50400
        --header_only_fallback
Total Memory Usage: 52 MB

我提交了CppTools 问题4186:针对头文件/包含文件显示了多个定义,但为此仅在includePath上包含了一个 ,已作为问题2564的副本关闭了:在#include路径上转到定义不使用IntelliSense信息

因此,这似乎只是一个已知的错误,没有已知的解决方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM