硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1125|回复: 8
收起左侧

[STM32CubeH7] 一直对keil是如何编译.C和.H文件的比较模糊,有时候添加头文件就是凭感觉

[复制链接]

95

主题

297

回帖

582

积分

金牌会员

123

积分
582
发表于 2022-11-3 09:03:52 | 显示全部楼层 |阅读模式
一直对keil是如何编译.C和.H文件的比较模糊,有时候添加头文件就是凭感觉,有没有相关的讲解呢?如果深入了解这个的话,就知道#include“xxxx”应该放哪里,怎么放不会报错。
回复

使用道具 举报

210

主题

1043

回帖

1683

积分

至尊会员

More we do, more we can do.

积分
1683
发表于 2022-11-3 09:18:18 | 显示全部楼层
本帖最后由 emwin 于 2022-11-3 09:20 编辑

这篇讲得挺透彻的:Introduction to #include in C
或者Keil官网这篇:How #include Works
回复

使用道具 举报

95

主题

297

回帖

582

积分

金牌会员

123

积分
582
 楼主| 发表于 2022-11-3 09:36:37 | 显示全部楼层
emwin 发表于 2022-11-3 09:18
这篇讲得挺透彻的:Introduction to #include in C
或者Keil官网这篇:How #include Works

中文资料有吗
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2022-11-3 10:14:43 | 显示全部楼层
整个需要什么头文件,添加什么就行,或者简单省事,直接整理个头文件汇总的h文件,所有头文件都包含到整个下面,那个文件要用,直接调用整个就行。
回复

使用道具 举报

95

主题

297

回帖

582

积分

金牌会员

123

积分
582
 楼主| 发表于 2022-11-3 10:21:28 | 显示全部楼层
eric2013 发表于 2022-11-3 10:14
整个需要什么头文件,添加什么就行,或者简单省事,直接整理个头文件汇总的h文件,所有头文件都包含到整个 ...

嗯 ,是的 现在就是这么搞的,就是想知道里面的编译原理,也是好奇keil调用变量函数之间的调用关系
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2022-11-3 10:46:26 | 显示全部楼层
ssssssss 发表于 2022-11-3 10:21
嗯 ,是的 现在就是这么搞的,就是想知道里面的编译原理,也是好奇keil调用变量函数之间的调用关系

函数调用关系看MDK生成的htm文件。
编译连接看这个
image.png
回复

使用道具 举报

6

主题

21

回帖

39

积分

新手上路

积分
39
发表于 2022-11-3 11:54:56 | 显示全部楼层
eric2013 发表于 2022-11-3 10:14
整个需要什么头文件,添加什么就行,或者简单省事,直接整理个头文件汇总的h文件,所有头文件都包含到整个 ...

直接整理个头文件汇总的h文件,这种不是说不好的习惯吗?只图一时省事的做法,导致整个系统的编译时间恶化,并对后来人的维护造成了巨大的麻烦
回复

使用道具 举报

14

主题

62

回帖

104

积分

初级会员

积分
104
发表于 2022-11-3 17:06:32 | 显示全部楼层
.h,.c只是大家习惯的命名规则,并不是说只能#include  H文件,你#include C文件同样没有问题,你的函数写在H文件里面也行。
#include可以理解为该文件在这个位置原封不动展开,不要管他是H还是C文件,哪怕是 TXT也可以。所以理解这个东西,你完全可以无视文件类型。

=========================================
比如你在名为 newf.txt的文件里面写个函数 :
void txt_fun(void)
{
}
+++++++++++++++++++
在你的main.c里面,可以这样调用:
#include "newf.txt"
int mian(void)
{
    txt_fun();
}
=========================================
总结为两点:
1、无视文件扩展名
2、#include 等同将指定文件内容复制粘贴在该处


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106746
QQ
发表于 2022-11-4 10:48:50 | 显示全部楼层
PYL4869 发表于 2022-11-3 11:54
直接整理个头文件汇总的h文件,这种不是说不好的习惯吗?只图一时省事的做法,导致整个系统的编译时间恶化 ...

实际上维护更简单,一个总的头文件,里面包含各种子汇总的OS头,文件系统头,网络头,BSP驱动头等相应。

比如添加驱动代码,仅需包含BSP头文件。而应用代码直接添加总头文件。编译速度相当快,相比HAL库的编译影响可以忽略不记。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-3 16:14 , Processed in 0.278211 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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