刚学C51,我想将一些常用的函数(譬如延时函数,LED数码管函数等等)放到一个公共文件里,方便调用

csdn_nickname_chen 2008-03-23 05:20:55
刚学C51,我想将一些常用的函数(譬如延时函数,LED数码管函数等等)放到一个公共文件里,方便各个程序调用。

譬如我建一个文件8051EX.C
里面有很多常用的函数
Delay()
GetLEDCode()
Func1()
Func2()
Func3()
....


可是我的其中一个工程只需要调用Delay(),其它的函数都不需要调用。
请问,在编译的时候,其它函数的代码会不会被编译进去,编译出来的体积会不会增大。

如果这种方式会增大体积,那大家是怎么管理常用函数库的呢,是一个函数一个.c文件吗?
...全文
246 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdn_nickname_chen 2008-03-29
  • 打赏
  • 举报
回复
to xjhlOV

我本来该文件里只有一个Delay()函数,我也只调用该函数,编译后的Hex文件为677字节
为了测试,我复制粘贴了很多个Delay(),分别改名为Delay1() Delay2() Delay3() Delay4(),再重新编译后,Hex文件就有700多字节了。

所以我认为没有使用的函数也被编译进去了。
xjhlOV 2008-03-28
  • 打赏
  • 举报
回复
没有使用到的函数是不会被编译进去的,可以不管他们
lbing7 2008-03-25
  • 打赏
  • 举报
回复
在KEIL里编译生成LIB文件

或是把编译好的OBJ文件加入工程,在头文件里声明

然后,直接包含头文件在C文件里调用就可以
csdn_nickname_chen 2008-03-25
  • 打赏
  • 举报
回复
jennyvenus 这么热心,非常感谢!
我刚学,也先不管大小好了,以后学多了,也许自己就知道怎么处理了。
还有个问题,记得Keil C的版本是有2K限制的,是不是编译出来的Hex文件不能超过2K,还是另外的算法?
那种突破2K的Keil C版本容易找吗?
用户 昵称 2008-03-25
  • 打赏
  • 举报
回复
俺也不太清楚,平常也并不特别在意hex的大小,俺师傅经常查51生成的那些map文件,比如俺写的一个程序用了库函数memset,导致包含进来string.h里面好几个函数,于是就去掉了,自己写了个MEM_SET。
sdfdfasg 2008-03-25
  • 打赏
  • 举报
回复
用预编译
用户 昵称 2008-03-25
  • 打赏
  • 举报
回复
可以说破解版的keil有的是。
csdn_nickname_chen 2008-03-24
  • 打赏
  • 举报
回复
to:jennyvenus

还有没有其它管理库函数方法。


用户 昵称 2008-03-24
  • 打赏
  • 举报
回复
静态连接的库本来就那样,你不调用,当然不会体积变大了,但是如果你调用了,估计整个库就都进来了。
csdn_nickname_chen 2008-03-24
  • 打赏
  • 举报
回复
我注意到Keil C自带的库,如math.h,如果只是将它#include <math.h>进来,而不调用里面的函数,那么编译后的HEX不会增大,只有在调用了里面的函数之后,Hex体积才会变大。

大家知道这是怎么做到的吗?
csdn_nickname_chen 2008-03-23
  • 打赏
  • 举报
回复
似乎还不是很理想。。。
用户 昵称 2008-03-23
  • 打赏
  • 举报
回复
会吧,俺一直是做一个函数文件库,加入新工程,编译成功后再删除没用的函数。

27,374

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧