vscode中c/c++插件报错问题

c_cpp_properties.json用法

在其中我们主要关注的还是 Include,defines,compilerPath这三个属性

1.Include:工程所依赖的H文件,其中不同平台有不同平台所必须的依赖,本文就三种指令集来总结该用法

X86: 如Intel系列芯片
ARM: 如STM32F103RC芯片
RISC-V: 如K210芯片

  1. 采用STM32-ARM的工程
    在这里插入图片描述

  2. 采用K210-RISC-V的工程
    在这里插入图片描述

  3. X86比较常见不做展示


其中workspaceFolder表示当前工程目录,\**表示检索当前目录下的所有的h文件,
添加到工程的依赖当中,这时候问题就来了,我们跨平台开发时候,通常不是直接在那个平台开发,而是交叉编译文件后移植的方式在X86的架构上编写其他的架构的指令,所以我们就要根据提供的不同的平台来引入相应的依赖,其中编译器是把架构的指令(汇编语言)转为机器语言(二进制)的,不同平台的编译器都一样的,这样问题就知道了,当我们把其他平台依赖导入后,vscode就会从那个地方去寻找我们所需的依赖,就不会产生缺少.h依赖的报错了.

2.defines

这个要针对vscode的对makefi兼容性不够来理解,其中我用STM32做演示;
当去去除defines就会产生如下报错,很明显也是缺少依赖,但是我们在前面不是已经定义过了吗?
在这里插入图片描述
这时候就要跟随缺少的文件位置找到这里,这个头文件,这里问题就来了,为什么没有被引用
在这里插入图片描述
跟随提示我们找到这里,发现我们在一个起始的头文件里没有定义我们需要的文件,这就是条件编译,所以很明显defines的目的就是声明我们所需条件编译的文件是哪个.
在这里插入图片描述

3.compilerPath

上面也说了,gcc编译器都是一样的,只是转换C转汇编的区别,这个就是指明gcc位置,其中如果添加环境变量后vscode会自动帮你确定gcc位置,如果有多个gcc版本还可以自己选择

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值