嗨,我正在尝试编写一个peek函数,但是我对如何修复我收到的警告感到困惑。我的目标是返回一个空字符,如果大小为零,否则返回最后一个字符。
struct mystring
{
char size;
char capacity;
char* data;
};
typedef struct mystring Mystring;
char* mystring_peek(MYSTRING hString)
{
Mystring* string = (Mystring*) hString;
if(string != NULL)
{
if(string->size != NULL)//line containing first warning
{
return &(string->data);//line containing second warning
}
}
return;
}使用gcc -Wall的错误/警告
warning: comparison between pointer and integer [enabled by default]
warning: return from incompatible pointer type [enabled by default]发布于 2014-03-22 19:42:08
第一个警告是,正如编译器所说的,因为您比较了指针和整数。守则应改为:
if(string->size != 0)第二个错误是简单的类型不匹配。当需要char**时,返回char*。你大概是说:
return string->data;当然,编译器的对象是:
return;毕竟,您确实承诺返回一个char*。
人们还会对从MYSTRING到Mystring*的演员阵容产生疑问。
发布于 2014-03-22 19:47:10
找到修改后的函数
char* mystring_peek(MYSTRING hString)
{
Mystring* string = (Mystring*) &hString;
if(string != NULL)
{
if(string->size != 0)
{
return string->data;
}
}
return NULL;
}发布于 2014-03-22 19:40:00
为什么这条线
Mystring* string = (Mystring*) hString;它没有任何意义,因为hString是Mystring类型的。
事情总有分崩离析的地方。
https://stackoverflow.com/questions/22582457
复制相似问题