首页 文章

带C头的VSCode智能感知

提问于
浏览
3

我搜索过这个但是找不到任何东西 . 如果它是愚蠢的,我将毫无问题地结束我的问题 . 我在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文件时,intellisense的标头不起作用 .

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 回答

  • 1

    如果您仍然感兴趣或有任何人使用Google在此主题中遇到错误:

    VSC有两个不同的引擎用于自动完成 . 1.遗留的“Tag Parser”2. IntelliSense引擎

    后者是此时的默认值,"Tag Parser"是后备解决方案 . 如您所愿,两者都在 c_cpp_properties.json 中配置 . 递归搜索 browse 中的路径并仅由Tag Parser使用,而 includePath 中的路径不会被递归搜索并由IntelliSense引擎使用 .

    鉴于您的 Headers MyFooClass.h 不是直接位于根文件夹而是位于子文件夹 include 中,您必须将 "${workspaceRoot}/include" 添加到 includePath 才能使智能感知代码完成 .

    现在他们有更好的文档:https://github.com/Microsoft/vscode-cpptools/blob/master/Documentation/LanguageServer/c_cpp_properties.json.md

相关问题