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

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

  •  
  •   dudamao · 350 天前 · 1327 次点击
    这是一个创建于 350 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景:在汽车嵌入式软件行业工作,日常编辑大型工程( 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  
       350 天前 via Android
    装 C/C++插件不是挺好用的嘛
    RecursiveG
        2
    RecursiveG  
       350 天前
    在 Linux 上写 CMake 项目 ccls 还挺好用的 https://github.com/MaskRay/ccls/wiki/Project-Setup
    noroot
        3
    noroot  
       350 天前   ❤️ 1
    头文件识别有问题?配置好项目好识别还好吧,除非是那种用宏定义的头文件。
    我是直接装了 C/C++ Extension Pack ,然后根据 Makefile 配置项目设置。
    除了偶然性的 C/C++ 插件语法分析卡死需要重开 VSCode ,其他情况工作良好。
    signalyc
        4
    signalyc  
       350 天前
    自然是转进到 vim
    ch2
        5
    ch2  
       350 天前
    新建个文件,当前目录下的.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  
       350 天前 via Android   ❤️ 1
    远离 Electron ,不用 vscode
    zheng5200
        7
    zheng5200  
       350 天前
    gtags + vscode 插件
    kilasuelika
        8
    kilasuelika  
       350 天前 via Android
    @ingramyang vscode 用 C++,装插件后,内存占用很大。至少 16g 内存才能用得比较愉快吧。8g 电脑用这个经常卡死。
    ivan_wl
        9
    ivan_wl  
       349 天前
    生成 compile_commands.json 然后 vscode 会自动识别并导入的
    orange
        10
    orange  
       349 天前
    ccls 还不错,需要提前生成 compile_commands.json
    ingramyang
        11
    ingramyang  
       349 天前 via Android
    @kilasuelika 都这年头了谁开发机还用 8g 的,赶紧换啊
    kilasuelika
        12
    kilasuelika  
       349 天前 via Android
    @ingramyang 学校的电脑,不好换。平时用的 VS ,还能够用。
    dudamao
        13
    dudamao  
    OP
       213 天前
    时隔 5 个月回来回复:

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