楼主,我在编译时出现一个warning,麻烦帮我看看,谢谢!
错误信息:
-----------------
gcc -c str.c -O2 -Wall -W -Wshadow -idirafter dummyinc
str.c: In function `str_iconv_write':
str.c:682: warning: assignment discards qualifiers from pointer target type
str.c:680: warning: unused variable `print_buf'
str.c: In function `str_iconv_read':
str.c:757: warning: assignment discards qualifiers from pointer target type
str.c:755: warning: unused variable `print_buf'
gcc -c netstr.c -O2 -Wall -W -Wshadow -idirafter dummyinc
--------------------------
下面是str.c的相应位置
----------------
void
str_iconv_write(struct mystr* p_str)
{
iconv_t cd;
char *from_buf;
char *dyn_from_buf, *to_buf, *dyn_to_buf;
unsigned int from_len;
unsigned int dyn_from_len, to_len, dyn_to_len;
unsigned int print_buf;
from_buf = str_getbuf(p_str);
from_len = str_getlen(p_str);
p_str->p_buf = 0;
str_free(p_str);
private_str_alloc_memchunk(p_str, from_buf, from_len);
str_reserve(p_str, 2*from_len);
p_str->len=2*from_len;
vsf_sysutil_memclr(p_str->p_buf, p_str->len+1);
dyn_from_buf = from_buf;
dyn_from_len = from_len;
to_buf = p_str->p_buf;
dyn_to_buf = to_buf;
to_len = p_str->len;
dyn_to_len = to_len;
if((cd = vsf_sysutil_iconv_init_write())==(iconv_t)(-1))
{
bug("str_iconv_write");
}
while(vsf_sysutil_iconv(cd, &dyn_from_buf, &dyn_from_len, &dyn_to_buf, &dyn_to_len)==(size_t)(-1))
{
switch(errno)
{
case EILSEQ:
if((dyn_to_buf<to_buf+to_len)&&(dyn_to_buf>=to_buf))
{
vsf_sysutil_memcpy(dyn_to_buf, dyn_from_buf, 1);
dyn_to_buf+=1;
dyn_to_len-=1;
dyn_from_buf+=1;
dyn_from_len = from_buf + from_len -dyn_from_buf;
if(dyn_from_len==0) break;
}
else
break;
continue;
case EINVAL:
break;
case E2BIG:
str_reserve(p_str, to_len+dyn_from_len);
p_str->len=to_len+dyn_from_len;
dyn_to_len+=dyn_from_len;
dyn_to_buf = p_str->p_buf + (dyn_to_buf-to_buf);
to_buf = p_str->p_buf;
to_len = p_str->len;
continue;
default:
die("iconv set strange errno. Should not happenned!");
break;
}
break;
}
str_trunc(p_str, (p_str->len)-dyn_to_len);
vsf_sysutil_iconv_close(cd);
vsf_sysutil_free(from_buf);
}
查阅相关资料好像是数据类型有问题,但是不知道怎么处理 