OpenEdv-开源电子网

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

关于.h头文件的一些想法

[复制链接]

29

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2015-6-10
在线时间
1 小时
发表于 2015-6-23 11:10:15 | 显示全部楼层 |阅读模式
5金钱
买了战舰开发板,看可里面的程序,发现,程序都是这样写的,一个源程序文件里面都有一个.h头文件,比如:spi.c 会有 spi.h 文件,key.c 会有 key.h 文件,lcd.c 会有 lcd.h 文件......
想知道,为什么程序都这样?另外想,可不可以这样写呢?
spi.c、key.c、lcd.c共用一个头文件,也就是spi.h key.hlcd.h合成一个.h文件,供spi.c、key.c、lcd.c共用,可以这样写吗?大神们啊,出来指点吧...

最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5136
金钱
5136
注册时间
2014-8-26
在线时间
1316 小时
发表于 2015-6-23 11:10:16 | 显示全部楼层
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-6-23 11:10:16 | 显示全部楼层
通常做法是每个.c文件配有一个.h文件,另外自己建立一个总头文件把这些个头文件包含进去,然后在每次包含的时候包含这个总头文件就可以了,这样省事也比较系统,个人感觉。
你所说的合成一个头文件不知道是不是简单的把声明等都放在一起,这样可以倒是可以,但不便于维护,容易混乱。
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

29

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2015-6-10
在线时间
1 小时
 楼主| 发表于 2015-6-23 14:18:00 | 显示全部楼层
回复【2楼】login_FAE:
---------------------------------
那为什么不这么做?
回复

使用道具 举报

29

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2015-6-10
在线时间
1 小时
 楼主| 发表于 2015-6-23 14:20:25 | 显示全部楼层
回复【3楼】龙之谷:
---------------------------------
对,就是所有.c的源文件共用一个头文件,不这样做的原因仅仅是因为不便于维护,容易混乱吗?
回复

使用道具 举报

0

主题

51

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2014-3-5
在线时间
65 小时
发表于 2015-6-23 14:26:11 | 显示全部楼层
可以看下中文版《C rimer lus》这书的有关头文件讲解的内容,第五版是在第16章的16.5.1、16.5.2这两个小节,里面的内容还是很有帮助的。
急不来总有障碍客观的存在...
回复

使用道具 举报

0

主题

51

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2014-3-5
在线时间
65 小时
发表于 2015-6-23 14:27:56 | 显示全部楼层
回复【5楼】enginezhong:
---------------------------------
工程大了的时候当然不好维护,容易混乱,也不好移植程序。慢慢搞,以后自己会体会到很多东西为什么要这样做的原因的
急不来总有障碍客观的存在...
回复

使用道具 举报

230

主题

1950

帖子

10

精华

论坛元老

Rank: 8Rank: 8

积分
4562
金钱
4562
注册时间
2010-12-14
在线时间
32 小时
发表于 2015-6-23 14:40:32 | 显示全部楼层
回复【3楼】龙之谷:
---------------------------------
是的。。。。2楼的兄弟说得很在理。。。这是最好的做法。
我们主要是要让初学者明白,每个头文件包含关系
我是开源电子网?网站管理员,对网站有任何问题,请与我联系!QQ:389063473Email:389063473@qq.com
回复

使用道具 举报

9

主题

538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3371
金钱
3371
注册时间
2015-1-7
在线时间
794 小时
发表于 2015-6-23 16:18:24 | 显示全部楼层
一个.C对应一个.H,这样可以很好的模块化,比如uart模块中的.C.H,移植顺序如下:
1、在工程中添加.C文件;
2、在自己的代码中包含.H文件;
3、调用.C中的函数。
这样日后用起来很方便,而且在正式的产品中也必须这样使用
机器生汇编,汇编生B,B生C,C生万物.... 经过长期对C语言的研究,目前只有两个方面不懂:这也不懂,那也不懂
https://github.com/ianhom
回复

使用道具 举报

29

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2015-6-10
在线时间
1 小时
 楼主| 发表于 2015-6-23 16:26:18 | 显示全部楼层
回复【7楼】文刀言身寸:
---------------------------------
好的,多谢指点。
回复

使用道具 举报

29

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
222
金钱
222
注册时间
2015-6-10
在线时间
1 小时
 楼主| 发表于 2015-6-23 16:29:17 | 显示全部楼层
回复【9楼】ianhom:
---------------------------------
好的,以后多写写,慢慢体会。
回复

使用道具 举报

0

主题

51

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
370
金钱
370
注册时间
2014-3-5
在线时间
65 小时
发表于 2015-6-23 16:34:41 | 显示全部楼层
回复【10楼】enginezhong:
---------------------------------
如8楼所说的这样可以很好的模块化,方便移植程序。
另外论坛里学习频道还有个帖子可以看下http://www.openedv.com/posts/list/33972.htm
急不来总有障碍客观的存在...
回复

使用道具 举报

11

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2015-8-10
在线时间
21 小时
发表于 2016-1-25 19:14:11 | 显示全部楼层
龙之谷 发表于 2015-6-23 11:10
通常做法是每个.c文件配有一个.h文件,另外自己建立一个总头文件把这些个头文件包含进去,然后在每次包含的 ...

请问单片机的头文件一般是谁编写的?生产单片机的公司么?还有就是那里可以免费下载到头文件?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 13:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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