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

时间:2018-12-17 07:42:21

标签: c pointers compiler-warnings

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

  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] != '\0'; ++i)
    res=(res)*10+str[i]-'0';
    return res;
}

我对此不满意。请帮助我解决此问题。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

当前,您正在尝试将int分配给int * 您会看到recvdata指向int的指针。

修改如下。

 int *recvdata2, recvdata;
 recvdata = str2int(tx_data);
 recvdata2 = &recvdata

答案 1 :(得分:0)

  • 您知道自己有一个函数int str2int(char *str)
  • 因此,在调用该函数时,需要确保传递char*作为参数,并以int作为结果类型。
  • 在出现编译器错误时,请检查是否使用正确的类型。事实证明,您传递uint8_t而不是char*,并使用int*作为返回类型而不是int
  • 此外,很明显,该函数希望调用方分配数据,因此char*需要指向已分配的数组。

摘要:您不能通过反复试验来编程。首先检查该功能,确保知道它的期望,然后编写调用代码。