OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3761|回复: 3

关于头文件包含的问题

[复制链接]

4

主题

6

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2017-10-26
在线时间
4 小时
发表于 2018-4-6 12:06:44 | 显示全部楼层 |阅读模式
1金钱
1.PNG
如上图所示的stm32f4xx_gpio.c文件,并没有包含画圈的头文件,为什么编译成功后会在下面显示出来呢

最佳答案

查看完整内容[请看2#楼]

头文件是重复包含的,你一级一级的找,肯定可以找到根源。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-4-6 12:06:45 | 显示全部楼层
头文件是重复包含的,你一级一级的找,肯定可以找到根源。
回复

使用道具 举报

7

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
188
金钱
188
注册时间
2015-11-18
在线时间
16 小时
发表于 2018-4-6 15:05:16 | 显示全部楼层
打开 管理 找到 hardware 然后把不用的删掉就好了
回复

使用道具 举报

4

主题

6

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2017-10-26
在线时间
4 小时
 楼主| 发表于 2018-4-8 21:57:03 | 显示全部楼层
我找到问题的根源了,这要从全局宏定义说起: 1.PNG
stm32f4xx.h文件中包含了下面的.h文件
2.PNG
由于图一的全局宏定义,进而条件编译:
3.PNG
进而包含了‘最大’头文件stm32f4xx_conf.h
4.PNG
我们打开一看,这里面包含了所有外设.h文件,我们把多余的.h文件注释掉,再编译,多余的外设.h文件就消失了
5.PNG
6.PNG

////////////////////////   总结    ///////////////////////////////////
stm32f4xx.h文件只包含了以下.h文件:

#include "core_cm4.h"           
#include "system_stm32f4xx.h"
#include <stdint.h>
#include "stm32f4xx_conf.h"

其中#include "stm32f4xx_conf.h"是由于全局宏定义以至于条件编译被包含进来,这个文件很重要,
可以/* Uncomment the line below to enable peripheral header file inclusion */

而#include <stdint.h>文件之所以采用<>,而不是"",是因为这两者有所不同。
具体地,就是:<>,预处理程序在C编译系统定义的标准目录下查找指定的文件,回想一下,我们
并没有把stdint.h文件添加到我们的工程文件夹。而"",预处理程序在首先在当前源文件所在的目录
下查找指定文件,若没有找到,则在C编译系统定义的标准目录下查找指定的文件,而我们已经添加
了 "core_cm4.h"      "system_stm32f4xx.h"等文件的查找路径,如下图:
7.PNG



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 19:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表