打印
[51单片机]

考验二姨家的大神:关于Keil的LIB库

[复制链接]
2940|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yesiqi|  楼主 | 2013-9-30 15:22 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
各位高手、大神:

本人也在程序界混迹多年,今天突然遇到一个问题,就是关于LIB库的。

LIB库在生成时在Memory Model是可以选择的,我当时没有注意,默认是Small模式,背景交待结束……

库生成都没有问题,但在引用时工程采用的是Large模式,所以出错了,错误见图:


LIB库将模式更换为Large生成后,调用没有任何问题,请问::LIB库在生成时要指定编译模式吗?那怎么能做到通用呢?

相关帖子

沙发
dirtwillfly| | 2013-9-30 15:48 | 只看该作者
今天下午我也看不到图了

使用特权

评论回复
板凳
yewuyi| | 2013-9-30 16:18 | 只看该作者
1、程序界是啥界?六界中没有它。。。
2、混迹多年果然不复杂,不简单。。。
3、直接选择Large模式编译生成库,然后在应用程序中选择Small模式编译应用程序代码,请观察编译结果并汇报结论。

使用特权

评论回复
地板
ayb_ice| | 2013-9-30 16:20 | 只看该作者
程序中指定即可
比如:

#pragma save
#pragma small
void func(void)
{
...
}
#pragma restore

使用特权

评论回复
5
ayb_ice| | 2013-9-30 16:20 | 只看该作者
参考系统库头文件声明即可

使用特权

评论回复
6
yesiqi|  楼主 | 2013-9-30 16:51 | 只看该作者
yewuyi 发表于 2013-9-30 16:18
1、程序界是啥界?六界中没有它。。。
2、混迹多年果然不复杂,不简单。。。
3、直接选择Large模式编译生成 ...

回复开始:
1、程序界非六界所属,故我们称自己为程序猿!!
2、这个困扰我好久,查keil——help文件无果;查百度无果,查谷歌无果,看别人的LIB库无果!!!!
     当然自己研究了也一周多,反复试验反复调试,我不是一有问题就问人,我会自己去悟,但这个问题确实以我现在的知识搞不定了!!
3、进入主题了?你的方法我有试验过了,结果还是会另你失望的,也是不行,有图有真相!!



使用特权

评论回复
7
yewuyi| | 2013-9-30 17:32 | 只看该作者
yesiqi 发表于 2013-9-30 16:51
回复开始:
1、程序界非六界所属,故我们称自己为程序猿!!
2、这个困扰我好久,查keil——help文件无果 ...

到KEIL自带的数学/运算库或者其它什么库中找一个文件,打开它的原型C文件,看它怎么写的。


KEIL自带的数学库等中的函数,不论是应用代码选择SMALL还是LARGE,都是可以编译通过的。

可以用类推的方法依葫芦画瓢编译观察结果并汇报结论。

使用特权

评论回复
8
yewuyi| | 2013-9-30 17:33 | 只看该作者
日,‘学 运’竟然成了关键字被屏蔽

使用特权

评论回复
9
很忙| | 2013-10-6 17:29 | 只看该作者
关注下,学习下解决结果。

使用特权

评论回复
10
sunhq02| | 2013-10-7 08:48 | 只看该作者
标准库的实现可能在编译器内部做了优化
不确定能不能做到想标准库那样

或许你可以试一下在lib中提供多个不同编译模式的函数
函数实现/声明的时候指定编译模式
    返回值 函数名(参数) 编译模式 {
然后试试可不可以一个声明 多种实现

使用特权

评论回复
11
sunhq02| | 2013-10-7 09:07 | 只看该作者
另外我查了下
c51的标准库也不是在一个库里面有各种模式
而是每个模式一个lib
   C51S.LIB - 没有浮点运算的 Small model
   C51C.LIB - 没有浮点运算的 Compact model
   C51L.LIB - 没有浮点运算的 Large model
   C51FPS.LIB - 带浮点运算的 Small model
   C51FPC.LIB - 带浮点运算的 Compact model
   C51FPL.LIB - 带浮点运算的 Large model
编译器根据情况加载合适的lib

使用特权

评论回复
12
sunhq02| | 2013-10-7 09:12 | 只看该作者
实际上我觉得, 最好用small, 因为small生成的code最短
然后对于一些大变量手动调整
再注意一下栈深度就ok了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:就侃单片机 技术博客http://blog.sina.com.cn/u/1681173590

2

主题

60

帖子

0

粉丝