我用的是探索者的开发板,由于前一段时间一直在用K60,很长时间没用原子的库了,最近在调用原子的库的时候,uart.c里总是有个函数出现警告,警告也就没什么,关键是编译的时候说这有错误。开始以为是库的问题,又重新下了个最新的库,调用的时候还是有问题,以为自己调用出了问题。后来直接打开库直接编译,例如跑马灯等,但所有工程的uart.c里都报错了,还是老样子。
出问题的函数位于uart.c的47行,函数如下:
//定义_sys_exit()以避免使用半主机模式
_sys_exit(int x)
{
x = x;
}
编译结果如下:
*** Using Compiler 'V5.06 update 2 (build 183)', folder: 'e:Keil_v5ARMARMCCBin'
Build target 'LED'
compiling usart.c...
..SYSTEMusartusart.c(47): error: #260-D: explicit type is missing ("int" assumed)
_sys_exit(int x)
..SYSTEMusartusart.c: 0 warnings, 1 error
"..OBJLED.axf" - 1 Error(s), 0 Warning(s).
Target not created.
Build Time Elapsed: 00:00:04
最后附上全屏截图。。。

所有情况都在截图里了。。。
求大神解答,这是怎么回事,该怎么解决。
我还不懂这个函数的作用,而且奇怪的是,我的keil编译这些程序是没有问题的,连警告都没有,只是在程序里跟你一样有个警告的标志。
那个函数是什么并不重要,重要的是编译语句的翻译是:显式类型丢失(“int”假设)。并不是函数类型的问题,一看就知道这是个特殊的函数,不需要类型。
问题的原因我已经找到了,我用的不是原子提供的STM32F4 的器件支持包,而是从Keil官网下载的最新的STM32F4 的器件支持包,原本以为新版的会兼容旧版,可目前来看并不是这么回事。
原子提供的是1.0.8版本的,而我从官网下载的是2.90版本的,估计uart里的那个函数本来就写的有问题,所以才显示警告吧,更新了器件包后就报错了。
一周热门 更多>