快 2022 年了,请问各位大佬,用 VS Code 写嵌入式 C 的最佳姿势是什么?

2021-12-19 14:30:09 +08:00
 dudamao

背景:在汽车嵌入式软件行业工作,日常编辑大型工程( Autosar )。

用过的几类编辑器软件:

Source Insight:全局搜索太慢了,很多宏没法识别,函数跳转不够准确。 Clion:只能在自己的电脑上用,除了 double shift 的搜索不是特别准,其他方面都很好,奈何公司电脑不能安装。 VS Code:全局搜索又快又准,但头文件识别有问题,函数没法跳转,在 google 上搜了很多方法都不好用,而且内存占用真的太大了……

目前看比较容易在公司环境下使用的就是 VS Code ,所以有比较好能让 VS Code 识别 C 语言头函数的方法吗?

求教!

1844 次点击
所在节点    问与答
13 条回复
ingramyang
2021-12-19 14:36:17 +08:00
装 C/C++插件不是挺好用的嘛
RecursiveG
2021-12-19 15:02:45 +08:00
在 Linux 上写 CMake 项目 ccls 还挺好用的 https://github.com/MaskRay/ccls/wiki/Project-Setup
noroot
2021-12-19 15:14:46 +08:00
头文件识别有问题?配置好项目好识别还好吧,除非是那种用宏定义的头文件。
我是直接装了 C/C++ Extension Pack ,然后根据 Makefile 配置项目设置。
除了偶然性的 C/C++ 插件语法分析卡死需要重开 VSCode ,其他情况工作良好。
signalyc
2021-12-19 15:18:27 +08:00
自然是转进到 vim
ch2
2021-12-19 15:37:11 +08:00
新建个文件,当前目录下的.vscode/c_cpp_properties.json ,把头文件目录挨个加进来就是了
```
{
"configurations": [
{
"name": "Linux",
"defines": [
"DEBUG",
"_DEBUG",
"_DEBUG_CDB",
"UNICODE",
"_UNICODE",
"_FORTIFY_SOURCE=1",
"CHECK_PTHREAD_RETURN_VALUE",
"_FILE_OFFSET_BITS=64",
"_LARGEFILE64_SOURCE",
"LARGEFILE_SOURCE",
"__cdecl=__attribute__((__cdecl__))"
],
"includePath": [
"${workspaceFolder}/**",
"/usr/include/c++/7",
"/usr/include/x86_64-linux-gnu/c++/7",
"/usr/include/c++/7/backward",
"/usr/lib/gcc/x86_64-linux-gnu/7/include",
"/usr/local/include",
"/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed",
"/usr/include/x86_64-linux-gnu",
"/usr/include"
],
"intelliSenseMode": "gcc-x64",
"browse": {
"path": [
"${workspaceFolder}/**",
"/usr/include/c++/7",
"/usr/include/x86_64-linux-gnu/c++/7",
"/usr/include/c++/7/backward",
"/usr/lib/gcc/x86_64-linux-gnu/7/include",
"/usr/local/include",
"/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed",
"/usr/include/x86_64-linux-gnu",
"/usr/include",
],
"limitSymbolsToIncludedHeaders": false
},
"compilerPath": "/usr/bin/gcc"
}
],
"version": 4
}
```
yolee599
2021-12-19 22:28:50 +08:00
远离 Electron ,不用 vscode
zheng5200
2021-12-20 00:44:37 +08:00
gtags + vscode 插件
kilasuelika
2021-12-20 12:32:09 +08:00
@ingramyang vscode 用 C++,装插件后,内存占用很大。至少 16g 内存才能用得比较愉快吧。8g 电脑用这个经常卡死。
ivan_wl
2021-12-20 19:17:13 +08:00
生成 compile_commands.json 然后 vscode 会自动识别并导入的
orange
2021-12-21 01:29:24 +08:00
ccls 还不错,需要提前生成 compile_commands.json
ingramyang
2021-12-21 02:53:07 +08:00
@kilasuelika 都这年头了谁开发机还用 8g 的,赶紧换啊
kilasuelika
2021-12-21 04:59:44 +08:00
@ingramyang 学校的电脑,不好换。平时用的 VS ,还能够用。
dudamao
2022-05-05 16:13:16 +08:00
时隔 5 个月回来回复:

最终还是切换到 VSCode 下了,除了内存占用大没有别的缺点。
@ch2 感谢,参考你的配置方法,在 workspace 里定义头文件目录解决了引用。
项目上使用的是非开源编译器,但是基于 gcc 开发的,通过在 cpptools 配置里指定用 gcc 实现了 c 的解析。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/823126

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX