金牌会员
 
- 积分
- 1522
- 金钱
- 1522
- 注册时间
- 2014-5-16
- 在线时间
- 217 小时
|
发表于 2016-7-28 21:26:55
|
显示全部楼层
我看到好几个问这个问题的了,这是个很显然的问题,_sys_exit()函数定义缺少函数类型,这是由于软件开发人员疏忽导致的,当时写这个例程的人肯定没有处理编译警告.
_sys_exit()等这几个函数,KEIL允许开发者重写,以对输入输出流进行重定向,官方的重定向文件在<KEIL目录>\ARM\Startup\Retarget.c
完整文件如下:
[mw_shl_code=c,true]/******************************************************************************/
/* RETARGET.C: 'Retarget' layer for target-dependent low level functions */
/******************************************************************************/
/* This file is part of the uVision/ARM development tools. */
/* Copyright (c) 2005 Keil Software. All rights reserved. */
/* This software may only be used under the terms of a valid, current, */
/* end user licence from KEIL for a compatible version of KEIL software */
/* development tools. Nothing else gives you the right to use this software. */
/******************************************************************************/
#include <stdio.h>
#include <time.h>
#include <rt_misc.h>
#pragma import(__use_no_semihosting_swi)
extern int sendchar(int ch); /* in Serial.c */
extern int getkey(void); /* in Serial.c */
extern long timeval; /* in Time.c */
struct __FILE { int handle; /* Add whatever you need here */ };
FILE __stdout;
FILE __stdin;
int fputc(int ch, FILE *f) {
return (sendchar(ch));
}
int fgetc(FILE *f) {
return (sendchar(getkey()));
}
int ferror(FILE *f) {
/* Your implementation of ferror */
return EOF;
}
void _ttywrch(int ch) {
sendchar (ch);
}
void _sys_exit(int return_code) {
while (1); /* endless loop */
}
[/mw_shl_code] |
|