分配给另一个参数时来自不兼容指针类型的警告分配

Warning assignment from incompatible pointer type while assigning to another parameter

在代码中,我在编译时收到此警告。 我试图解决这个问题,但我无法解决这个问题。

  static uint8_t tx_data;

 int *recvdata2,*recvdata;
 recvdata= str2int(tx_data); //warning assignment from incompatible pointer type
recvdata2=(uint8_t*)&recvdata

str2int 是一个将字符串转换为整数的函数。

   int str2int(char *str)
{
    int res=0;
    int i;
    for ( i = 0; str[i] != '[=11=]'; ++i)
    res=(res)*10+str[i]-'0';
    return res;
}

我对此一窍不通。请帮我解决这个问题。 任何帮助将不胜感激。

目前您正在尝试将 int 分配给 int * 你看 recvdata 是指向 int.

的指针

修改如下。

 int *recvdata2, recvdata;
 recvdata = str2int(tx_data);
 recvdata2 = &recvdata
  • 你知道你有一个函数int str2int(char *str)
  • 因此,在调用该函数时,您需要确保将 char* 作为参数传递,并将 int 作为结果类型。
  • 收到编译器错误后,您检查是否使用了正确的类型。结果是您传递了 uint8_t 而不是 char* 并使用 int* 作为 return 类型而不是 int
  • 此外,很明显函数希望调用者分配数据,所以char*需要指向一个分配的数组。

总结:你不能通过反复试验来编程。首先检查函数,确保你知道它期望什么,然后编写调用代码。