打印

无法进入main 函数原因之一

[复制链接]
1052|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
因为用了printf 函数而无法进入到main函数:
沙发
monkeypony|  楼主 | 2015-5-26 12:43 | 只看该作者
解决1:使用了printf之类的库函数,需要编写_sys_exit()之类底层函数。照你的提示看,也许是_sys_open()没写。_sys_xxx之类的的只要写个空函数就行了;因printf()之类的函数,使用了半主机模式。使用微库的话,不会使用半主机模式,所以就没有问题。
添加下面代码,就可以使用标准库了:
#pragma import(__use_no_semihosting)
_sys_exit(int x)
{
        x = x;
}
struct __FILE
{
int handle;
/* Whatever you require here. If the only file you are using is */
/* standard output using printf() for debugging, no file handling */
/* is required. */
};
/* FILE is typedef’ d in stdio.h. */
FILE __stdout;

使用特权

评论回复
板凳
monkeypony|  楼主 | 2015-5-26 12:44 | 只看该作者
解决方法2:勾选“微库”MicroLIB--->Use MicroLIB

使用特权

评论回复
地板
firstblood| | 2015-6-11 19:20 | 只看该作者
printf()之类的函数,使用了半主机模式。使用微库的话,不会使用半主机模式,所以就没有问题。
这个问题的不是很明白的。。

使用特权

评论回复
5
deliciouscook| | 2015-6-19 15:55 | 只看该作者
开启了微库,就不会出现这个问题了。我碰到过的,或者重新定义底层函数库,重定义到串口。

使用特权

评论回复
6
zhangbo1985| | 2015-6-19 19:12 | 只看该作者
monkeypony 发表于 2015-5-26 12:44
解决方法2:勾选“微库”MicroLIB--->Use MicroLIB

这个截图的是想说明啥的呢?一般的在编译程序的时候这一块的都是选择默认的。

使用特权

评论回复
7
tongbu2015| | 2015-6-21 21:54 | 只看该作者
使用了printf之类的库函数,需要编写_sys_exit()之类底层函数。

使用特权

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

本版积分规则

133

主题

715

帖子

0

粉丝