设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
中问网首页
我的收藏
站长博客
搜索
搜索
本版
帖子
用户
第一问答网
»
论坛
›
中问网
›
问答
›
再问.c与.h文件间关系以及如何处理
返回列表
发新帖
再问.c与.h文件间关系以及如何处理
[复制链接]
11
|
8
|
2021-1-27 07:17:19
|
显示全部楼层
|
阅读模式
目前系统中有多个自定义的.h文件和.c文件。
如sd.c;sd.h;uart.h等待,
1在main.c以及sd.c都要使用uart.h,如果我仅main.h中#include"uart.h",编译时会提示sd.c中的"uart.h"被调用函数倍显示(implicit)申明;如果在sd.h中#include"uart.h",就会报其函数重复定义。
2由于mian.c中的函数过多,想继续将main.c分解,如分解成myfun.c,同样需要调用"uart.h"中函数;如果在myfun.c中#include"uart.h",就会对uart.h中函数报重复定义的错误。
请问如何处理.c以及.h文件间的关系?
分 -->
回复
使用道具
举报
千问
|
2021-1-27 07:17:19
|
显示全部楼层
对于有多个源文件的程序,都是在.c文件中定义你要用的函数,在.h文件中声明对应.c文件中定义的函数,然后将他们放到你的程序目录中,编写程序时只需“#include“.h””即可,因为编译系统会自动根据声明去目录中查询的。你所说的第二种情况,是因为你使用的方法是文件包含,建议你看看C教材上有关的章节。在文件包含时,.c和.h文件没什么区别,你是怎么定义的就怎么用。
回复
使用道具
举报
千问
|
2021-1-27 07:17:19
|
显示全部楼层
谢谢,虽然没有理解。
什么是文件包含?
引用1楼的回复:
对于有多个源文件的程序,都是在.c文件中定义你要用的函数,在.h文件中声明对应.c文件中定义的函数,然后将他们放到你的程序目录中,编写程序时只需“#include“.h””即可,因为编译系统会自动根据声明去目录中查询的。你所说的第二种情况,是因为你使用的方法是文件包含,建议你看看C教材上有关的章节。在文件包含时,.c和.h文件没什么区别,你是怎么定义的就怎么用。
回复
使用道具
举报
千问
|
2021-1-27 07:17:19
|
显示全部楼层
另外:如果我将所有的。c文件做成.h文件,放在编译器的根目录下,多次包含都没有问题。
引用1楼的回复:
对于有多个源文件的程序,都是在.c文件中定义你要用的函数,在.h文件中声明对应.c文件中定义的函数,然后将他们放到你的程序目录中,编写程序时只需“#include“.h””即可,因为编译系统会自动根据声明去目录中查询的。你所说的第二种情况,是因为你使用的方法是文件包含,建议你看看C教材上有关的章节。在文件包含时,.c和.h文件没什么区别,你是怎么定义的就怎么用。
回复
使用道具
举报
千问
|
2021-1-27 07:17:19
|
显示全部楼层
.h是声明
.c是实现
回复
使用道具
举报
千问
|
2021-1-27 07:17:19
|
显示全部楼层
引用5楼的回复:
.h是声明
.c是实现
LZ先明确这个。。。
另外,还要在语法上明确区分:定义和声明的不同
C里是支持一处定义,多处声明的。
我习惯的做法是:
每一组相关的功能组织到一个C和H文件
然后,整个项目再组织一个整体的H文件,用来处理头文件之间的次序
然后,所有的应用都只包含项目中的那个H文件即可
回复
使用道具
举报
千问
|
2021-1-27 07:17:19
|
显示全部楼层
文件包含不是一两句能说清楚,随便一本C教材都有与此有关的介绍,看一下就行!
回复
使用道具
举报
千问
|
2021-1-27 07:17:19
|
显示全部楼层
.c为函数具体实现文件;
。h为函数声明文件
回复
使用道具
举报
千问
|
2021-1-27 07:17:19
|
显示全部楼层
在uart.h文件中加上一个控制宏
如
#ifndef__UART_H__
#define__UART_H__
//
//你原来uart.h中的内容
//
#endif
注意:不要在.h文件中定义任何变量,否则会让你很郁闷
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
千问
主题
0
回帖
4882万
积分
论坛元老
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
积分
48824836
加好友
发消息
回复楼主
返回列表
问答
热门排行
1
TP-link 无线路由器密码设置
2
脸上长痘痘好久了没好,是不是身体出毛病的问题
3
从小嗓子就嘶哑的治疗建议
4
手脚发热,有时感觉全身都发热,但是体温不高
5
惠普笔记本硬盘分区
6
深圳公明启芸家教中心
7
子宫肌瘤五年且月经不调面部黄褐斑与这有关吗
8
糖尿病患者腰疼,伴有右腿神经疼痛已有两个月
9
排卵期服用过皿环寿
10
感冒发热吃什么食物,.蛤蟆油发热病人好吃
11
罗技RX250不用一段时间无响应?
12
有吸烟史20年,身体不好,最近吐血?大概是什么原因?急急急!
13
产后来月经最早多早
14
我每次月经前都肚子痛而且乳房有点胀痛,是怎么了?
15
是不是一张电子口令卡可以有多卡使用?
16
心脾两虚吃啥药
17
问什么QQ游戏登入不了 说什么密码错误 我确保我的密码是正确的
18
真菌性感染用什么药
19
我有25天左右没来月经,前天终于来了,血很多,会不会早期是自然流产
20
女朋友为什么怀不了孕
21
精子发黄透明
22
婚礼提前两周给请帖合适吗?
23
求入门单反
24
长期过敏鼻炎
25
眼睛布满血丝,很痛
26
电脑辐射对身体有什么伤害?
27
网游法律问题?急急急~
28
`````我的同事,我应该接受这类型的男人吗?大家帮帮我
29
沈阳到黄石坐火车怎么走好
30
老打嗝肚子里好像总是有水
31
我的这个宝宝能不能要啊
32
百鬼夜宴来捣鬼的有哪些人
33
山西医科大学汾阳学院一专什么时候新生开学
34
大连坐标数码怎么样
35
没有过性生活,会不会得宫颈糜烂?
36
四肢游走性神经痛
37
割双眼皮的风险大吗?
38
一道奥数几何题
39
麦蒂训练的内容谁知到?!!
40
胃里有气上逆的症状分析
41
我老是想睡觉的原因
42
水宜生水杯怎么打开
43
阴虚型体质。平时身热多汗在服六味地黄丸
44
cm0518集成块作用.和各针脚的定义。
45
泰康e理财终身寿险(万能型)怎么样
46
肠胃病和肝脾不和及阴阳不调
47
每天泡茶,凉性的功效
48
怎样消除螨虫
49
全运向前冲中把女主持推水里的女孩叫什么?
50
舌头发僵,有裂纹的症状分析
51
如何将混有K2So4,MgSo4的KNo3固体提纯,要过程,谢谢
52
想去太平森林公园玩
53
偶尔咳嗽吐血是什么原因
54
抽动秽语综合症哪里能治好
55
银魂插曲OST下载
56
新生儿耳轮部有黑色毛发是什么原因
57
产后复潮后月经不准
58
想买一台微波炉,大家给推荐一下
59
福州一中
60
请问杂菌要怎么治?
61
想要孩子,HPV68阳性
62
0x7c93a011指令引用的0xfffffe04内存。该内存不能为read
63
最近突然发现头发掉的有点多的原因
64
找一首女声歌
65
知道西门子S7-200的进
66
尿道结石1.5肾结石1.1
67
得了颈椎病咋办啊?
68
怎样下载歌曲
69
我是一个从小到大是一根头发也没有的
70
河北衡水如何批2胎,
71
皮肤发痒,,结痂,脱皮
72
先天脑发育不全
73
谁能给我个R头啊.跪谢
74
艾灸能治愈颈椎病吗?
75
想找很久没见的人怎么办?
76
一道高中数学排列组合的题目
77
身体总是感觉累没精神手还发抖吃饭都感觉累
78
左肾丸像我这种情况要服用多久
79
24岁还骨瘦如柴的原因
80
可以补血的方法
81
急求水产品加工厂设计图
82
季节变换、天气变化神经剧烈疼痛
83
患心悸失眠有一年多了,能不能热水泡脚啊?
84
一个四位数,他被131除时余112,他被132除时余98这个数是几
85
请教医生···
86
我有心脏供血不足的问题可以泡脚吗
87
按摩气海穴,心窝就会有隐痛的感觉是正常现象吗
88
abb断路器上的小开关起什么作用
89
NDS钻石珍珠美丽度问题
90
是否得鼻炎
91
我有阴道炎可能是滴虫
92
我是城镇户口,怎么领取独生子女费...
93
月经来的少是不是因为刮宫引起的?
94
会计凭证保存几年才行?
95
现在柯南放到哪里了?能否将前3集一起告之谢谢!
96
如果分类不合适
97
早上起床时腰两边酸困
98
天龙八部华北网通不冻泉
99
急!!体重填错了,影响唐筛综合症的检查结果吗?