OpenEdv-开源电子网

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

关于头文件的一点疑惑求确认

[复制链接]

10

主题

75

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2015-5-22
在线时间
0 小时
发表于 2015-7-23 02:04:22 | 显示全部楼层 |阅读模式
5金钱
一般头文件都会有这样一句话(拿misc.h为例)
#ifndef __MISC_H
#define __MISC_H
#endif
为了防止头文件重复包含。
1.我能不能这样理解,就是到最后编译链接的时候,不管这个头文件被包含了多少次,在最终生成的文件中,只有一份(就是最先被include的那份),其他的都被屏蔽掉了
2.如果1正确,那么为什么好多头文件都包含有#include "stm32f10x.h"这个有文件呢?反正最后只留一份,干嘛要在这么多文件中都包含他呢?针对这个疑问我猜测的解释是:虽然最后生成的可执行文件中只包含了一次#include "stm32f10x.h",但是在其他每个单独的 .c或.h文件中,用到了stm32f10x.h中的定义(例如里面对寄存器基址的定义经常用到),所以需要单独包含进来。
3.如果1,2都对的话,但是我还是感觉有点不对劲,不知道是哪里有知识漏洞,请大神帮忙指点一二,我该看哪方面知识。谢谢!

最佳答案

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

看看此贴,对你有帮助:http://blog.csdn.net/abc5382334/article/details/18052757
我建了一个战舰stm32交流群:320350722 新手请教老手,老手大显身手! stm32交流群:320350722 stm32交流群:320350722
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-7-23 02:04:23 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11554
金钱
11554
注册时间
2014-4-1
在线时间
1317 小时
发表于 2015-7-23 09:41:09 | 显示全部楼层
这个问题的实质是:哪些项目可以重复定义?哪些不能?

好像没有见过详细的资料。

据我所知,有些内容可以重复定义,比如宏定义,编译器是允许的;但有些不能。
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-7-23 14:50:43 | 显示全部楼层
个人理解:
1.只编译第一次。不是其他的都被屏蔽掉了,本来就没有其他的这一说
2.多个包含相当于多对一的连线,头文件是唯一的
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

10

主题

75

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2015-5-22
在线时间
0 小时
 楼主| 发表于 2015-7-23 20:00:02 | 显示全部楼层
求原子弹大神
我建了一个战舰stm32交流群:320350722 新手请教老手,老手大显身手! stm32交流群:320350722 stm32交流群:320350722
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

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

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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