标题: [已解决]51单片机串口发送字符串问题,显示错误warning C214: 'Argument' [打印本页]

作者: wolfinn    时间: 2022-5-30 20:12
标题: [已解决]51单片机串口发送字符串问题,显示错误warning C214: 'Argument'
MAIN.C(170): warning C214: 'Argument': conversion: pointer to non-pointer
程序部分如下:
{
........
.........
uart_send("hello world!",sizeof("hello world!"));
......;
......;
}
uart_send(unsigned char *string123,int num)
{
for (n=0;n<num;n++)
   {
    SBUF=*string123++;
    while (!TI);
    TI=0;
    }


请问为什么会出现这问题,如何解决???

作者: sgql    时间: 2022-5-30 20:23
string123形参是个指针,你应该传递字符串首地址,而不是自符串
作者: Hephaestus    时间: 2022-5-30 20:43
uart_send(unsigned char *string123,int num)改成
uart_send(const char *string123,int num)

其实你的代码没必要加num
  1. uart_send(const char *string123)
  2. {
  3. for (;;)
  4.    {
  5.     if(*string123==0)break;
  6.     SBUF=*string123++;
  7.     while (!TI);
  8.     TI=0;
  9.     }
  10. }
复制代码


作者: wolfinn    时间: 2022-5-30 22:11
Hephaestus 发表于 2022-5-30 20:43
uart_send(unsigned char *string123,int num)改成
uart_send(const char *string123,int num)

让我试试看,如果不用NUM,那它括号里的东西也会节省ROM空间是不是?
作者: wolfinn    时间: 2022-5-30 22:40
Hephaestus 发表于 2022-5-30 20:43
uart_send(unsigned char *string123,int num)改成
uart_send(const char *string123,int num)

我错了,你写的也不能通过,同样报警但能编译过。后来看看原来是我在文件头定义那里string前面指针那个星没写。补上后我写的也可以通过了。程序别的问题还有,但这个问题是解决了。
作者: wolfinn    时间: 2022-5-30 22:43
sgql 发表于 2022-5-30 20:23
string123形参是个指针,你应该传递字符串首地址,而不是自符串

写字符串获得的也只是首地址。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1