V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
dudamao
V2EX  ›  问与答

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

  •  
  •   dudamao · 2021-12-19 14:30:09 +08:00 · 2088 次点击
    这是一个创建于 1059 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    用过的几类编辑器软件:

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

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

    求教!

    13 条回复    2022-05-05 16:13:16 +08:00
    ingramyang
        1
    ingramyang  
       2021-12-19 14:36:17 +08:00 via Android
    装 C/C++插件不是挺好用的嘛
    RecursiveG
        2
    RecursiveG  
       2021-12-19 15:02:45 +08:00
    在 Linux 上写 CMake 项目 ccls 还挺好用的 https://github.com/MaskRay/ccls/wiki/Project-Setup
    noroot
        3
    noroot  
       2021-12-19 15:14:46 +08:00   ❤️ 1
    头文件识别有问题?配置好项目好识别还好吧,除非是那种用宏定义的头文件。
    我是直接装了 C/C++ Extension Pack ,然后根据 Makefile 配置项目设置。
    除了偶然性的 C/C++ 插件语法分析卡死需要重开 VSCode ,其他情况工作良好。
    signalyc
        4
    signalyc  
       2021-12-19 15:18:27 +08:00
    自然是转进到 vim
    ch2
        5
    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
        6
    yolee599  
       2021-12-19 22:28:50 +08:00 via Android   ❤️ 1
    远离 Electron ,不用 vscode
    zheng5200
        7
    zheng5200  
       2021-12-20 00:44:37 +08:00
    gtags + vscode 插件
    kilasuelika
        8
    kilasuelika  
       2021-12-20 12:32:09 +08:00 via Android
    @ingramyang vscode 用 C++,装插件后,内存占用很大。至少 16g 内存才能用得比较愉快吧。8g 电脑用这个经常卡死。
    ivan_wl
        9
    ivan_wl  
       2021-12-20 19:17:13 +08:00
    生成 compile_commands.json 然后 vscode 会自动识别并导入的
    orange
        10
    orange  
       2021-12-21 01:29:24 +08:00
    ccls 还不错,需要提前生成 compile_commands.json
    ingramyang
        11
    ingramyang  
       2021-12-21 02:53:07 +08:00 via Android
    @kilasuelika 都这年头了谁开发机还用 8g 的,赶紧换啊
    kilasuelika
        12
    kilasuelika  
       2021-12-21 04:59:44 +08:00 via Android
    @ingramyang 学校的电脑,不好换。平时用的 VS ,还能够用。
    dudamao
        13
    dudamao  
    OP
       2022-05-05 16:13:16 +08:00
    时隔 5 个月回来回复:

    最终还是切换到 VSCode 下了,除了内存占用大没有别的缺点。
    @ch2 感谢,参考你的配置方法,在 workspace 里定义头文件目录解决了引用。
    项目上使用的是非开源编译器,但是基于 gcc 开发的,通过在 cpptools 配置里指定用 gcc 实现了 c 的解析。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3604 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 00:10 · PVG 08:10 · LAX 16:10 · JFK 19:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.