KEIL工具之编译优化选项

KEIL工具之编译优化选项


use cross-module optimization//跨模块优化

说明:使能链接器反馈文件,从而能够更深层次的代码优化

use microLIB//微型库

说明:改变C run-rime库设置以产生更小巧的代码,它不完全兼容ANSI,但已能满足大多数的应用。


==========================================

use cross-module optimization//跨模块优化
这个选项我勾选了,一下子代码生成量小了50%~60%,厉害。就是不知道有没有副作用啊,比如运行/调试不稳定之类的?我用的是JLINK V8调试仿真器。

至于microLIB,谷歌了一下,发现以下解释:

microlib是缺省C库的备选库,功能较少,不具备某些ISO C特性,只适用于需要极少量内存的、不在操作系统运行的深层嵌入式应用程序。microLIB不能将main声明为使用函数,不能返回内容。不支持stdio,不提供互斥锁来防止非线程安全的代码。


真是令人吐血啊!岂不是为了一个区区的printf函数,而舍弃了我现在要用的UCOS操作系统?而且居然不支持stdio?岂不是N多通用函数不能用?

不知道我的理解对不对,如果真的是这样,请问高手有没有什么办法在不勾选microlib的情况下而使用printf函数呢?


自己搞定了。定义以下结构体以及函数:
struct __FILE {int handle;/* Add whatever you need here */} __stdout, __stdin;

int fputc(int ch, struct __FILE *f);
这样就能在不使用MicroLIB的情况下使printf函数能用于调试及烧写


==========================================================


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值