请问哪位碰到过这个错?

cdk1206 2006-03-16 02:32:52
我是在VC下写的程序,但是经常也会要在ARM的编译器下编译使用。
于是就遇到了一个传递指针的指针的函数中出问题报错:

Error: C2933E: type disagreement for 'set_field'

请问哪位高手碰到过这个错误,请指点指点,谢谢!
...全文
194 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
jixingzhong 2006-03-17
  • 打赏
  • 举报
回复
我现在怀疑的地方是我在定义的函数里又把这个参数unsigned char** o_puc_packet又传递给另外的一个函数了,因为我只要把这块儿注释掉就不报错,但是这没理由啊!!!
----------------------------------
怀疑在 函数中,
处理的时候数据类型没有正确 ~

例如 2级指针取数据 等等 ...
cdk1206 2006-03-17
  • 打赏
  • 举报
回复
自己顶一下
cdk1206 2006-03-17
  • 打赏
  • 举报
回复
但是在win32下编译就能够顺利完成

并且确实完成了想要完成的功能

就是在arm下编译不过去
逸学堂 2006-03-17
  • 打赏
  • 举报
回复
应该是使用二级指针的问题。
cdk1206 2006-03-16
  • 打赏
  • 举报
回复
我觉得方法是没有问题的,但是就是在ARM下过不去

to cqpp():

按单字节对齐的结构指针或者其成员指针 是什么意思?我问题中的几个参数或行或实都是类型统一的啊
cqpp 2006-03-16
  • 打赏
  • 举报
回复
在我的ARM编译器中如果你传的是一个按单字节对齐的结构指针或者其成员指针,需要强制类型转换,这个时候原来的参数类型就没有意义了,切忌!如果错了很难找!
iamcaicainiao 2006-03-16
  • 打赏
  • 举报
回复
我也不知道了。感觉是可以的。也许有其他原因。
#include <iostream.h>

int make_field(unsigned char** aa)
{
return 5;
}
int main()
{
unsigned char * aa;
int c = 0;
c = make_field(&aa);
cout<<c<<endl;
return 0;
}
iamcaicainiao 2006-03-16
  • 打赏
  • 举报
回复
你是说l_puc_buf是此时的l_puc_buf是unsigned char的指针
就是说unsigned char * l_puc_buf;
然后int make_field(unsigned char** o_puc_packet)这个函数。你传递&l_puc_buf给它?
---------------------------------------------------------------------------
jj_k 2006-03-16
  • 打赏
  • 举报
回复
这种是常见的错误,如果你确认调用正确的话,加个强制类型转换就ok了,
你试一下,
cdk1206 2006-03-16
  • 打赏
  • 举报
回复
来人看看吧

急啊
cdk1206 2006-03-16
  • 打赏
  • 举报
回复
不是啊
调用处:在set_field()中调用make_field(&l_puc_buf)/*此时的l_puc_buf是unsigned char的指针*/

定义处:int make_field(unsigned char** o_puc_packet)

我现在怀疑的地方是我在定义的函数里又把这个参数unsigned char** o_puc_packet又传递给另外的一个函数了,因为我只要把这块儿注释掉就不报错,但是这没理由啊!!!
iamcaicainiao 2006-03-16
  • 打赏
  • 举报
回复
是不是类型不匹配阿

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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