请教个问题,c语言的.H文件怎么生成的呢

2020-02-07 09:41发布

请教个问题,c语言的.H文件怎么生成的呢?难道我们只能用别人现成的吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
31条回答
little_Monkey
1楼-- · 2020-02-09 06:13
把后缀名改为.h就生成了
我爱电子制作
2楼-- · 2020-02-09 07:24
.H文件不是生成的,是你根据自己想要定义的。只是后罪名为.h,这个文件里主要是放宏定义以及接口函数的。
1ongquan
3楼-- · 2020-02-09 09:40
本帖最后由 1ongquan 于 2013-12-29 21:10 编辑
zhiguangqi 发表于 2013-12-29 20:25
哦,就这么简单啊。那这个.H是不是就是子程序的集合啊?


给你简单总结一下:

一般一个C文件要搭配一个H文件,两者文件名相同,如 UART.c对于UART.h  ,其它函数通过#include"UART.h",来调用UART.c里面定义的函数和变量

H文件里面是对同名的C文件里面内容的声明,C文件必须include同名的头文件,一般C文件需要用到的其它头文件(比如stdio.h),也在H文件里包含,见下面的例子

头文件一般要写成条件包含,这样在重复包含时,编译器自动把已经包含过的文件忽略掉

#ifndef __XXX_H
#define__XXX_H

#include <stdio.h>
.....
#endif

C文件里面写好的函数,要在对于的H文件挂个名,叫其它包含这个H的C文件知道这个函数的存在

H文件就像一个销售部,C文件是生产部,客户了解一个公司的产品都是从销售部了解的,不会关注他是怎么生产的;另一方面,销售部挂的东西,都是根据生产部来的,两个文件的关系基本可以用这个来比喻

C文件里面定义的全局变量要在头文件里面加extern 声明,叫其它包含这个H的C文件知道这里还有个全局变量

H文件里面可以定义宏,什么是宏?  看--> #define  LEDBLINK()  PORTA ^= (1<< LED)        C文件直接使用LEDBLINK();  编译之前会用PORTA ^= (1<< LED) 来进行替换

其它结构体也是要在H里面定义类型,但是必须在C文件里面例化
renpeng009
4楼-- · 2020-02-09 12:45
长得挺好看的
albert_w
5楼-- · 2020-02-09 17:01
 精彩回答 2  元偷偷看……
bailangcn
6楼-- · 2020-02-09 17:46
撸主的C语言有待提高

一周热门 更多>