无法进入main 函数原因之一

[复制链接]
1464|6
 楼主| monkeypony 发表于 2015-5-26 12:43 | 显示全部楼层 |阅读模式
因为用了printf 函数而无法进入到main函数:
 楼主| monkeypony 发表于 2015-5-26 12:43 | 显示全部楼层
解决1:使用了printf之类的库函数,需要编写_sys_exit()之类底层函数。照你的提示看,也许是_sys_open()没写。_sys_xxx之类的的只要写个空函数就行了;因printf()之类的函数,使用了半主机模式。使用微库的话,不会使用半主机模式,所以就没有问题。
添加下面代码,就可以使用标准库了:
  1. #pragma import(__use_no_semihosting)
  2. _sys_exit(int x)
  3. {
  4.         x = x;
  5. }
  6. struct __FILE
  7. {
  8. int handle;
  9. /* Whatever you require here. If the only file you are using is */
  10. /* standard output using printf() for debugging, no file handling */
  11. /* is required. */
  12. };
  13. /* FILE is typedef’ d in stdio.h. */
  14. FILE __stdout;
 楼主| monkeypony 发表于 2015-5-26 12:44 | 显示全部楼层
解决方法2:勾选“微库”MicroLIB--->Use MicroLIB
QQ截图20150526124359.png
firstblood 发表于 2015-6-11 19:20 | 显示全部楼层
printf()之类的函数,使用了半主机模式。使用微库的话,不会使用半主机模式,所以就没有问题。
这个问题的不是很明白的。。
deliciouscook 发表于 2015-6-19 15:55 | 显示全部楼层
开启了微库,就不会出现这个问题了。我碰到过的,或者重新定义底层函数库,重定义到串口。
zhangbo1985 发表于 2015-6-19 19:12 | 显示全部楼层
monkeypony 发表于 2015-5-26 12:44
解决方法2:勾选“微库”MicroLIB--->Use MicroLIB

这个截图的是想说明啥的呢?一般的在编译程序的时候这一块的都是选择默认的。
tongbu2015 发表于 2015-6-21 21:54 | 显示全部楼层
使用了printf之类的库函数,需要编写_sys_exit()之类底层函数。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

133

主题

715

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部