c++ vscode Intellisense不工作

23c0lvtd  于 2023-05-08  发布在  Vscode
关注(0)|答案(6)|浏览(210)

我刚下载了linux ubuntu14.04的visual studio代码。我创建了一个简单的test.cpp并用vscode编写,但intellisense不起作用。
下面是test.cpp中的代码:

struct test{
    int a = 5;
}

int main(){
    test t;
    t.
}

当我写“t”的时候,没有智能感知告诉我t的成员。
我在linux终端中使用命令“touch test.cpp”创建了test.cpp文件,然后使用visual studio代码打开test.cpp并编写代码。屏幕截图可以在这里看到:http://i.stack.imgur.com/fLhSA.png
有谁知道如何在linux下让intellisense为vscode工作?

mftmpeh8

mftmpeh81#

正如其他人建议的那样,现在可以添加C/C++扩展。
您可能会遇到以下两个扩展问题:

扩展不检测自定义库:

您必须添加自定义库的包含路径。请执行以下操作:
Ctr + Shift + P
C/C++扩展:配置
Incude Paths(例如,每行添加一个路径)

${workspaceFolder}/**
/home/me/Documents/my_custom_lib/

扩展突然停止,不再给予任何建议:

如果不打开项目根目录,而是打开它的子目录,则可能会发生这种情况。打开项目根文件夹并重新加载窗口。

92vpleto

92vpleto2#

以下主要适用于使用ROS1的情况,使用C/C++ extension作为vscode:
在文件.vscode/c_cpp_properties.json(由VSCode ROS扩展生成)中,尝试将"cppStandard": "gnu++14"更改为"cppStandard": "c++14"
文件看起来像这样:

{
    "configurations": [
        {
            "browse": {
                "databaseFilename": "",
                "limitSymbolsToIncludedHeaders": true
            },
            "includePath": [
                "/home/user/catkin_ws/devel/include/**",
                "/opt/ros/melodic/include/**",
                ...,
                "/usr/include/**"
            ],
            "name": "ROS",
            "intelliSenseMode": "gcc-x64",
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++14"
        }
    ],
    "version": 4
}

ROS使用的是c++14标准,所以指定gnu++14似乎会破坏一些东西。这是从this question推导出来的。
一个issue存在于此(现已关闭)。

hgtggwj0

hgtggwj03#

没有内部intellisense,但有一个C/C++插件。最近它停止为我工作。我卸载并再次安装,后藤定义现在工作。

oxiaedzo

oxiaedzo4#

我注意到在VSCode(使用C/C++插件)以及其他具有自动完成/智能感知功能的C IDE上,这些功能依赖于静态代码分析,使用嵌套函数确实会混淆静态代码分析器,并导致自动完成等功能停止工作。
我刚刚有一个VS代码项目,我已经工作了一段时间显示这个。重新启动IntelliSense或VSCode itesf并没有修复它,但是我注意到它真的不能只在我正在处理的主文件中工作。在其他有帮助函数、库函数等的文件中。自动完成工作正常。
我删除了我的嵌套函数,并将其替换为goto cleanup;模式(常见,但我一直喜欢将onReturn();作为嵌套方法,以避免使用goto模式)。然而,我现在可以看到,嵌套函数确实扰乱了静态代码分析/自动完成。
我删除了嵌套函数,用goto cleanup;替换它,瞧,IntelliSense开始工作得很好。
因此,在奇怪的情况下,你像我一样,喜欢在C中使用嵌套函数,这通常会绊倒静态代码分析器/智能感知。

gr8qqesn

gr8qqesn5#

clangd插件

对于C++,我使用clangd插件获得了非常好的结果:https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangdclangd集成到vscode中。
此插件使用clang基于compile_commads.json database解析代码,其中包含构建系统产生的精确编译命令,此插件使用clang基于compile_commads.json database解析代码,其中包含构建系统产生的精确编译命令,因此往往会产生最准确的结果。
我在以下网址更详细地介绍了它的设置:VSCode“转到定义”不工作

pinkon5k

pinkon5k6#

在写这篇文章的时候,the languages supported说C++没有智能感知。

相关问题