打印
[STM32F1]

keil标准C语言库的问题

[复制链接]
1882|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xjycug|  楼主 | 2017-4-22 14:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在项目中使用STM32F1处理器,移植原来在C8051F单片机上运行的程序,编译器用的是keil4,原来单片机用的是keil3编译。现在遇到的问题有两个,一个是头文件string.h中相应函数的声明变了,比如strcmp函数,原来库中声明参数是char*,但是现在在keil4中,对应的库函数在ARMCC文件中,而且函数参数是const char*,搞得一编译总是warning。另一个就是有些函数没有了,比如strlen,memccpy等等。想问问有没有人遇到过该问题。如何解决?
沙发
xjycug|  楼主 | 2017-4-22 14:35 | 只看该作者
是重装一个版本较高的编译器,还是在该编译器中重装一个标准的C语言库函数?

使用特权

评论回复
板凳
xjycug|  楼主 | 2017-4-22 14:36 | 只看该作者
还是在ARM中就没有memccpy这些函数?

使用特权

评论回复
地板
皈依| | 2017-4-22 15:41 | 只看该作者
都有的 添加头文件 另外就是你说的 试试装新版本的keil

使用特权

评论回复
5
戈卫东| | 2017-4-22 16:36 | 只看该作者
memccpy, 没有。
memcpy可能会有

使用特权

评论回复
6
xjycug|  楼主 | 2017-4-22 17:02 | 只看该作者
原来用的是keil4.12,今天下午装了4.22,还有keil5都没有memccpy,看来还是自己写一个吧

使用特权

评论回复
7
ddllxxrr| | 2017-4-22 20:37 | 只看该作者
这个我也遇到过,后来改了这个函数好了,也就是说版本不一样该函数名不一样,也不知道怎么这么乱

使用特权

评论回复
8
xjycug|  楼主 | 2017-4-22 22:09 | 只看该作者
函数名不一样,还能有相同的功能吗?应该是近似功能的函数吧

使用特权

评论回复
9
minzisc| | 2017-4-22 23:46 | 只看该作者
使用的宏定义实现的吗?

使用特权

评论回复
10
minzisc| | 2017-4-22 23:50 | 只看该作者
8051能够移植到stm32上。

使用特权

评论回复
11
linqing171| | 2017-4-23 08:03 | 只看该作者
这个函数好像是到了arm版本到编译器到库里面没有了。字符串复制不都是\0为结束么?为什么要复制到某个字符就结束了。
另外,char*转const char*不需要强制转换,不应该有warning。反过来转才需要强制转换,否则应该有error。

使用特权

评论回复
12
Thorald| | 2017-4-23 15:04 | 只看该作者
这个我也遇到过,后来改了这个函数好了

怎么改的,改函数还是函数名

使用特权

评论回复
13
Soraka| | 2017-4-23 17:26 | 只看该作者
可以试试新版本的keil

使用特权

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

本版积分规则

20

主题

185

帖子

2

粉丝