分配给另一个参数时来自不兼容指针类型的警告分配
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*
需要指向一个分配的数组。
总结:你不能通过反复试验来编程。首先检查函数,确保你知道它期望什么,然后编写调用代码。
在代码中,我在编译时收到此警告。 我试图解决这个问题,但我无法解决这个问题。
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*
需要指向一个分配的数组。
总结:你不能通过反复试验来编程。首先检查函数,确保你知道它期望什么,然后编写调用代码。