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

标签 c++ visual-studio-code intellisense

我搜索过这个,但我找不到任何东西。如果是骗局,我会毫无问题地关闭我的问题。我在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 中的函数和数据 在我看来,这应该在我的配置中默认启用,但我不知道是否必须添加一些新内容。非常感谢。

最佳答案

如果您仍然感兴趣或者有人使用 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

关于c++ - 带有 C++ header 的 VSCode 智能感知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45612460/

相关文章:

android - json_extract for in android in flutter 不工作

c++ - 尝试使用函数计算剩余球员的球队数量

c++ - 有没有好的C++模板引擎

c++ - std::forward_list 是否支持手动重新指向?

c# - Visual Studio 中缺少异常列表

powershell - 编辑器面板中的visual-studio-code Powershell命令自动完成不起作用

vba - 私有(private)模块中的智能感知

c++ - O_DIRECT 与 AIO_RAW

asp.net - VS Code : running ASP. NET SPA with Angular 4 并使用 NodeServices 选项 Launch With Debugging

json - 在 Typescript : Error in terminal 中导入 Json 文件