AC6.19编译出错了
在MDK5 下使用AC5进行编译时,没有问题。但是它太古老了。
在上AC6.19的上一个版本也是没有问题的。前两天升级了下,出错啦。
Rebuild started: Project: project
*** Using Compiler 'V6.19', folder: 'C:\Keil_v5\ARM\ARMCLANG\Bin'
Rebuild target 'rt-thread'
compiling syscall_mem.c...
compiling cctype.c...
../../../components/libc/compilers/armlibc/syscalls.c(285): error: conflicting types for '_sys_tmpnam'
int _sys_tmpnam(char *name, int fileno, unsigned maxlength)
^
C:\Keil_v5\ARM\ARMCLANG\Bin..\include\rt_sys.h(137): note: previous declaration is here
extern void _sys_tmpnam(char * /name/, int /sig/, unsigned /maxlen/);
^
1 error generated.
这个错误到AC6.19才出现的,所以就针对AC6.19及以上的进行修改就可以了。直接上代码,如下:
#if (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6190004))
void _sys_tmpnam(char *name, int fileno, unsigned maxlength)
{
rt_snprintf(name, maxlength, "tem%03d", fileno);
}
#else
int _sys_tmpnam(char *name, int fileno, unsigned maxlength)
{
rt_snprintf(name, maxlength, "tem%03d", fileno);
return 1;
}
#endif
修改之后,编译就正常啦。
原作者:wlof
|