heneycatcat 发表于 2017-3-14 11:24:06

新手求助,STM32 sprintf函数入口参数用不了u8类型?

最近被这个问题弄得很郁闷,本来想把浮点型数字利用sprintf()函数转化为字符串发出去,谁知用不了u8类型的数组作为入口参数,请问各位大虾是什么原因吗?怎么解决?小弟不胜感激!

#include <stdio.h>
…………
u8 temp;
float ad2 = 3.14;
sprintf(temp ," %3.3f ",ad2);

compiling……
user\stm32f10x_it.c(91): warning:#167-D: argument of type "u8 *" is incompatible with parameter of type "char *restrict"
          sprintf(temp," %3.3f ",ad2);//转化字符串

发表于 2017-3-14 14:02:01

需要入口的是char型的,要么定义为char型,要么改为:sprintf((char *)temp," %3.3f ",ad2);

heneycatcat 发表于 2017-3-14 19:00:04

安 发表于 2017-3-14 14:02
需要入口的是char型的,要么定义为char型,要么改为:sprintf((char *)temp," %3.3f ",ad2);...

谢谢你的解答,但我想不懂为什么51可以这赋值而stm32就不可以,都是同一个函数

发表于 2017-3-15 08:46:58

类型不匹配警告是正常的,你以前的用法不对,只不过你用的编译器没有这个警告。

heneycatcat 发表于 2017-3-15 11:00:10

安 发表于 2017-3-15 08:46
类型不匹配警告是正常的,你以前的用法不对,只不过你用的编译器没有这个警告。 ...

哦,原来如此,非常感谢

kayman 发表于 2019-10-29 08:32:37

安 发表于 2017-3-14 14:02
需要入口的是char型的,要么定义为char型,要么改为:sprintf((char *)temp," %3.3f ",ad2);...

一语点破。我今天也是遇到这个问题,特意注册下回复这条,确实要加上(char*),keil4虽然编译过了,也能用,但是就是有warning看着不爽,这下解决了
页: [1]
查看完整版本: 新手求助,STM32 sprintf函数入口参数用不了u8类型?