我刚下载了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工作?
6条答案
按热度按时间mftmpeh81#
正如其他人建议的那样,现在可以添加C/C++扩展。
您可能会遇到以下两个扩展问题:
扩展不检测自定义库:
您必须添加自定义库的包含路径。请执行以下操作:
Ctr + Shift + P
C/C++扩展:配置
Incude Paths(例如,每行添加一个路径)
扩展突然停止,不再给予任何建议:
如果不打开项目根目录,而是打开它的子目录,则可能会发生这种情况。打开项目根文件夹并重新加载窗口。
92vpleto2#
以下主要适用于使用ROS1的情况,使用C/C++ extension作为vscode:
在文件
.vscode/c_cpp_properties.json
(由VSCode ROS扩展生成)中,尝试将"cppStandard": "gnu++14"
更改为"cppStandard": "c++14"
。文件看起来像这样:
ROS使用的是c++14标准,所以指定
gnu++14
似乎会破坏一些东西。这是从this question推导出来的。一个issue存在于此(现已关闭)。
hgtggwj03#
没有内部intellisense,但有一个C/C++插件。最近它停止为我工作。我卸载并再次安装,后藤定义现在工作。
oxiaedzo4#
我注意到在VSCode(使用C/C++插件)以及其他具有自动完成/智能感知功能的C IDE上,这些功能依赖于静态代码分析,使用嵌套函数确实会混淆静态代码分析器,并导致自动完成等功能停止工作。
我刚刚有一个VS代码项目,我已经工作了一段时间显示这个。重新启动IntelliSense或VSCode itesf并没有修复它,但是我注意到它真的不能只在我正在处理的主文件中工作。在其他有帮助函数、库函数等的文件中。自动完成工作正常。
我删除了我的嵌套函数,并将其替换为
goto cleanup;
模式(常见,但我一直喜欢将onReturn();
作为嵌套方法,以避免使用goto
模式)。然而,我现在可以看到,嵌套函数确实扰乱了静态代码分析/自动完成。我删除了嵌套函数,用
goto cleanup;
替换它,瞧,IntelliSense开始工作得很好。因此,在奇怪的情况下,你像我一样,喜欢在C中使用嵌套函数,这通常会绊倒静态代码分析器/智能感知。
gr8qqesn5#
clangd
插件对于C++,我使用
clangd
插件获得了非常好的结果:https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd将clangd集成到vscode中。此插件使用clang基于
compile_commads.json
database解析代码,其中包含构建系统产生的精确编译命令,此插件使用clang基于compile_commads.json
database解析代码,其中包含构建系统产生的精确编译命令,因此往往会产生最准确的结果。我在以下网址更详细地介绍了它的设置:VSCode“转到定义”不工作
pinkon5k6#
在写这篇文章的时候,the languages supported说C++没有智能感知。