带有 C++ header 的 VSCode 智能感知

小星 编程 65

我搜索过这个,但我找不到任何东西。如果是骗局,我会毫无问题地关闭我的问题。我在VSCODE中有一个c_cpp_properties.json配置文件

{
    "configurations": [
        {
            "name": "Mac",
            "includePath": [
                "/usr/include",
                "/usr/local/include",
                "${workspaceRoot}"
            ],
            "defines": [],
            "intelliSenseMode": "clang-x64",
            "browse": {
                "path": [
                    "/usr/include",
                    "/usr/local/include",
                    "${workspaceRoot}"
                ],
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            }
        },
        {
            "name": "Linux",
            "includePath": [
                "/usr/include/x86_64-linux-gnu/c++/5",
                "/usr/include/c++/5",
                "/usr/local/include",
                "/usr/include/x86_64-linux-gnu",
                "/usr/include",
                "${workspaceRoot}"
            ],
            "defines": [],
            "intelliSenseMode": "clang-x64",
            "browse": {
                "path": [
                    "/usr/include/x86_64-linux-gnu/c++/5",
                    "/usr/include/c++/5",
                    "/usr/local/include",
                    "/usr/include/x86_64-linux-gnu",
                    "/usr/include",
                    "${workspaceRoot}"
                ],
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            }
        },
        {
            "name": "Win32",
            "includePath": [
                "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include",
                "${workspaceRoot}"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE"
            ],
            "intelliSenseMode": "msvc-x64",
            "browse": {
                "path": [
                    "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include/*",
                    "${workspaceRoot}"
                ],
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            }
        }
    ],
    "version": 2
}

我正在 Ubuntu 16.04 中开发。我面临的问题是,当我输入 .cpp 文件时,标题的智能感知不起作用。

MyFooClass.h
#pragma once

#include <cstddef>
#include <fstream>
#include <string>

class MyFooClass
{
private:
    //My private fields

public:
    MyFooClass();
    virtual ~MyFooClass();
    bool MyFooFunction();
};

当我使用 MyFooClass.cpp 实现时

#include "MyFooClass.h"

Intellisense 不适用于 .h 中的函数和数据 在我看来,这应该在我的配置中默认启用,但我不知道是否必须添加一些新内容。非常感谢。

回复

共1条回复 我来回复
  • 编程小能手
    编程小能手
    来自于宇宙以外的编程小能手~
    评论

    如果您仍然感兴趣或者有人使用 Google 偶然发现了这个话题:

    VSC 有两个不同的引擎来自动完成。 1.遗留的“标签解析器” 2. 智能感知引擎

    此时后者是默认的,“Tag Parser”是一个后备解决方案。如您所料,两者都在 c_cpp_properties.json 中配置。 browse 中的路径以递归方式搜索并仅由 Tag Parser 使用,而 includePath 中的路径不以递归方式搜索并由 IntelliSense 引擎使用。

    鉴于您的 header MyFooClass.h 不直接位于根文件夹中,而是位于子文件夹 include 中,您必须添加 "${workspaceRoot }/include" 添加到您的 includePath 中,以便完成有效的 IntelliSense 代码。

    如今,他们对此有更好的文档: https://github.com/Microsoft/vscode-cpptools/blob/master/Documentation/LanguageServer/c_cpp_properties.json.md

    2025-04-13 15:07:05 1条评论