请教: "unsigned int" is incompatible with parameter of type "unsigned short *"

lxw76 2011-05-12 03:29:06
void process_connection(struct netconn *conn)
{ struct netbuf *inbuf;
char *rq;
unsigned int len=0;
unsigned int *b_len; char *temp;
inbuf = netconn_recv(conn);
b_len=&len;
pbuf_date_com(inbuf,(void **)&rq, *b_len);
// DEBUG_SendStr(rq,*b_len);
//普通用户登录网页主界面 Web_TEXT
if( (temp=string_cmp(rq, "GET ")) != NULL)
{
Web_Get_Date_Imports(temp,conn,*b_len); netbuf_delete(inbuf);
netconn_close(conn);
}
else if( (temp=string_cmp(rq, "POST ")) != NULL)
{
Web_Post_Date_Imports(rq,conn,*b_len);
netbuf_delete(inbuf);
netconn_close(conn);
}
}

unsigned char Web_Get_Date_Imports(char *p,struct netconn *conn,unsigned short *len)


编译出错
error: #167: argument of type "unsigned int" is incompatible with parameter of type "unsigned short *"

我也是抄别人一段代码,请教各位高手,什么问题?如何修改?
...全文
3004 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxw76 2011-05-14
  • 打赏
  • 举报
回复
明白了, h文件和c文件定义可以不一致!
unsigned char Web_Post_Date_Imports(char *p,struct netconn *conn,unsigned int len)
unsigned char Web_Post_Date_Imports(char *p,struct netconn *conn,unsigned short *len);
感谢各位!
bjtea 2011-05-14
  • 打赏
  • 举报
回复
你说的不一致,是做了个“多态性”的定义吧
gyf2001 2011-05-13
  • 打赏
  • 举报
回复
gcc编译选项的问题,可以设置不报错。
但是 unsinged int 给 unsinged short 内存会跑飞的,存在安全隐患
bjtea 2011-05-13
  • 打赏
  • 举报
回复
int指针加1,地址移动4字节;short指针加1,地址移动2字节,两者应该不能兼容。
如果在两块程序中,A中要使用int指针,B中要使用short指针,那么可以在A中,同时分别定义一个int指针和一个short指针,用short指针去调用B,返回来之后,将short指针的值再转换给int指针就可以了。
lxw76 2011-05-13
  • 打赏
  • 举报
回复
修改为一致的定义没有问题,但是在我抄袭的代码中是可以传递的,并且编译正常,我也看了他的 定义
* 以下定义与编译器相关
**********************************************************************
*/
typedef unsigned char uint8; // 无符号1个字节
typedef signed char sint8; // 有符号1个字节
typedef unsigned short uint16; // 无符号2个字节
typedef signed short sint16; // 有符号2个字节
typedef unsigned int uint32; // 无符号4个字节
typedef signed int sint32; // 有符号4个字节
#endif 的确是不一致的,有没有其他设置可以允许其传递????????
bjtea 2011-05-12
  • 打赏
  • 举报
回复
你定义的unsigned int *b_len是无符号整形指针,函数Web_Get_Date_Imports(char *p,struct netconn *conn,unsigned short *len)中形参是无符号短整形指针;在标准C中,两者是不匹配的。你可以试一下,修改自己的定义为短整形:
unsigned short int *b_len;

21,615

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧