免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1404 | 回复: 4
打印 上一主题 下一主题

求助:强制转换问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-15 14:03 |只看该作者 |倒序浏览
有段代码(简单写的)

int test(char *a)
{}


main()
{
char *b;
test((char *)&b);

}

用gcc编译 运行成功 变量b正确
我用 arm-linux-gcc 编译成功 运行到 arm上 b的值总是对
为什么? 请问如何解决? 给编译器加参数可以吗?
请高手指点!

论坛徽章:
0
2 [报告]
发表于 2006-09-15 14:20 |只看该作者
main()
{
char *b;
test((char *)&b);

}
感觉你的代码有问题吧!

论坛徽章:
0
3 [报告]
发表于 2006-09-15 14:31 |只看该作者
b(char *) ->   ...
    &b(char **)->b(char *)->  ...

论坛徽章:
0
4 [报告]
发表于 2006-09-15 16:11 |只看该作者
写的稍微全一点吧
typed dest{
......

}sdest;

int anlay(char *buff,void **ret)

{
......
}
main
{
char *buff;
sdest *pdest;
.
.
anlay(buff,(void **)&pdest);

}



这个用gcc编译 运行成功 变量dest正确
我用 arm-linux-gcc 编译成功 运行到 arm上 使用dest变量总是错误(栈错误)
为什么? 请问如何解决? 给编译器加参数可以吗?
请高手指点!

论坛徽章:
0
5 [报告]
发表于 2006-09-15 17:03 |只看该作者

回复 4楼 zljackdodo 的帖子

可能是你的程序有bug。刚才写了一段和你类似的代码,强制转换一个结构体指针地址为 void **, 分别用 gcc, arm-elf-gcc, mips-gcc 编译后在普通Linux, mips平台ucLinux,arm平台ucLinux跑都没问题。

检查一下是否内存越界。也可以用gdb(arm-elf-gdb)单步调试一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP