STM32将.c文件与.h文件加入工程文件的两种步骤,解决can not open source input file “xxx.h“: No such file or directory..方法

目录

1.第一种步骤(正点原子步骤)

2. 第二种步骤(江科大步骤,更简便) 

3.关于cannot open source input file “xxx.h“: No such file or directory...的问题

 3.1 问题描述

 3.2 本文的解决步骤

1.第一种步骤(正点原子步骤)

1.1 拿正点原子的工程模板为例,新建HARDWRAE文件夹,并在该文件夹下新建.c与.h文件,右键创建docx文档,后缀改为.c或者.h文件。

1.2 右键点击工程文件夹,点击Manage Project。

1.3 在Groups中点击文件夹图标,手动输入HARDWARE名称。 

1.4 在Files栏中,将HARDWARE中的.c与.h文件通过Add Files加入进去,随后点击ok。

1.5 点击魔术棒按钮 

1.6 在c/c++栏目下,选择好HARDWARE-LED的路径,点击文件夹,然后添加到LED,注意这里路径,不然就会报错,下方会说明这个问题。然后点击ok。

1.7 在.h文件中需加上防止重复定义代码

#ifndef __LED_H
#define __LED_H
...
#endif

        使用#ifndef关键字判定__LED_H是否被定义,如果没有定义,从#ifndef到#endif之间的内容就都有效,这个头文件若被其他文件包含,就会成功包含到这个文件里面。#define是为了防止重复包含,已经定义了就不会再进入。

        这样就可以正常编译了,一般将“sys.h”、“stm32f4xx.h"加入进去。

2. 第二种步骤(江科大步骤,更简便) 

21. 新建好空的HARDWARE文件夹,选择C/C++路径后(步骤一的1.6),直接在HARDWARE右键添加.c与.h文件。

2.2 右键HARDWARE,点击 Add New Item...。 

 2.3 在页面中添加.c文件名字以及对应的目录,.h文件也是如此,选择路径需要选择在HARDWARE中。.c与.h文件都需要分别加进去,且选择路径。

        这个时候HARDWARE文件夹下就已经出现对应的文件了。

        随后就按照步骤一中的1.7进行防止重定义,在.c文件包含对应的.h文件,以及#include "stm32f...",和”sys.h”。

3.关于cannot open source input file “xxx.h“: No such file or directory...的问题

 3.1 问题描述

        在后续添加其它.c和.h文件中,我使用了步骤二的方式进行添加,用的是一种方式下的工程,然后编译就出现:cannot open source input file “xxx.h“: No such file or directory...,搜索了一下,主要是路径的问题,没有添加路径,解决办法:

【STM32】Keil5在编译过程中出现.cannot open source input file “xxx.h“: No such file or directory的问题_keil5 cannot open source input-CSDN博客

error: #5: cannot open source input file “xxx.h“: No such file or directory_正点原子lvgl error: #5-CSDN博客

 3.2 本文的解决步骤

        在魔术棒—C++—添加路径一栏中,发现这个路径是到LED文件夹下,而江科大的工程文件是将所有.c和.h文件都直接放在HARDWARE中,正点原子是在对应类别下分别创建了LED文件,然后把.c和.h放在该文件夹下。 所以这里再添加一个路径到HARDWARE下即可,或者像正点原子模板一样,新建一个分类文件夹然后放进去,并添加到HARDWARE—你创建的文件名下也行。

        说到底,就是你所有放.c与.h文件的路径在这里必须要有,如果都在一个文件夹下添加一次即可,在不同的文件夹就要添加对应的路径。#####

  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值