stm32中 .c和.h文件是什么关系? keil下的.c文件和.h文件分别代表什么意思?

\u5355\u7247\u673a\u4e2d.c\u6587\u4ef6\u4e0e.h\u6587\u4ef6\u7684\u5173\u7cfb\u548c\u533a\u522b\u662f\u4ec0\u4e48\uff0c\u5728.h\u6587\u4ef6\u4e2d\u6539\u4e1c\u897f\uff0c\u6240\u5bf9\u5e94

.h\u6587\u4ef6\u662f\u7a0b\u5e8f\u7684\u5934\u6587\u4ef6\uff0c\u5c31\u662f\u4ee3\u7801\u7684\u58f0\u660e\u90e8\u5206\uff0c\u5728\u7f16\u8bd1\u65f6\u7f16\u8bd1\u5668\u4f1a\u9996\u5148\u641e\u8fd9\u4e00\u6bb5\u4ee3\u7801\uff0c.h\u6587\u4ef6\u76f8\u5f53\u4e8e\u4f60\u544a\u8bc9\u7f16\u8bd1\u5668\u4f60\u5199\u7684\u7a0b\u5e8f\u6709\u54ea\u4e9b\u51fd\u6570\u4ee5\u53ca\u4e00\u4e9b\u5168\u5c40\u53d8\u91cf\u3002
.c\u6587\u4ef6\u662f\u7a0b\u5e8f\u7684\u4e3b\u9898\uff0c\u662f\u4ee3\u7801\u51fd\u6570\u7684\u5b9e\u73b0\u90e8\u5206\uff0c\u4e0e.h\u6587\u4ef6\u662f\u5bf9\u5e94\u5173\u7cfb\uff08\u91cc\u9762\u7528\u5230\u7684\u51fd\u6570\u5927\u90e8\u5206\u9700\u8981\u5728\u5934\u6587\u4ef6\u91cc\u58f0\u660e\uff09\u3002
\u5934\u6587\u4ef6\u6539\u4e86\uff0c.c\u6587\u4ef6\u5e94\u8be5\u4e5f\u8981\u6539\u3002\u770b\u5177\u4f53\u95ee\u9898\u5566\u3002
\u4ed6\u4fe9\u7684\u5173\u7cfb\u5176\u5b9e\u4e8b\u4ef6\u4e45\u4e86\u81ea\u7136\u5c31\u77e5\u9053\u4e86

\u3002c\u8868\u793a\u6e90\u6587\u4ef6\uff0c\u7a0b\u5e8f\u7684\u539f\u578b\uff0c\u53d8\u91cf\u7684\u5b9a\u4e49
\u3002h\u6587\u4ef6\u8868\u793a\u58f0\u660e\u53d8\u91cf\u548c\u51fd\u6570\u3002\u522b\u7684c\u6587\u4ef6\u53ef\u4ee5\u5305\u542b\u4ed6\u3002

本质上没有任何区别。 只不过一般:.h文件是头文件,内含函数声明、宏定义、结构体定义等内容
.c文件是程序文件,内含函数实现,变量定义等内容。而且是什么后缀也没有关系,只不过编译器会默认对某些后缀的文件采取某些动作。你可以强制编译器把任何后缀的文件都当作c文件来编。

编译器在编译时是以C文件为单位进行的,也就是说如果你的项目中一个C文件都没有,那么你的项目将无法编译,连接器是以目标文件为单位。

它将一个或多个目标文件进行函数与变量的重定位,生成最终的可执行文件,在PC上的程序开发,一般都有一个main函数,这是各个编译器的约定,当然,你如果自己写连接器脚本的话,可以不用main函数作为程序入口。(main .c文件 目标文件 可执行文件)

扩展资料

main函数为标准C/C++的程序入口,编译器会先找到该函数所在的文件。

假定编译程序编译myproj.c(其中含main())时,发现它include了mylib.h(其中声明了函数voidtest()),那么此时编译器将按照事先设定的路径(Include路径列表及代码文件所在的路径)查找与之同名的实现文件(扩展名为.cpp或.c,此例中为mylib.c)。

如果找到该文件,并在其中找到该函数(此例中为voidtest())的实现代码,则继续编译;如果在指定目录找不到实现文件,或者在该文件及后续的各include文件中未找到实现代码。

则返回一个编译错误.其实include的过程完全可以"看成"是一个文件拼接的过程,将声明和实现分别写在头文件及C文件中,或者将二者同时写在头文件中,理论上没有本质的区别。



.C:写具体函数
.H:是.C的头文件,里面包含函数的定义,供其他.C函数调用。
比如有USART.C和USART.H,我再MAIN.C里想用USART.C里的函数USART_INIT(),我在MAIN.C里需要加“#include"USART.H"”,然后用函数“USART_INIT()”.

.c包含.h,.h提供函数

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网