当前位置: 技术问答>linux和unix
Fedora13_64位系统下地址赋给指针数组出错
来源: 互联网 发布时间:2017-02-10
本文导语: 代码: unsigned int addr1; unsigned char *mmio[1]; void *getaddr(uint32_t offset) { ... return (adddr1); } mmio[0]=(unsigned char *)getaddr(4); 这里出错了,getaddr(4)返回值为64位地址0x6f56f35620, 赋给mmio[0]后,mmio[0]接收到的值却...
代码:
unsigned int addr1;
unsigned char *mmio[1];
void *getaddr(uint32_t offset)
{
...
return (adddr1);
}
mmio[0]=(unsigned char *)getaddr(4);
这里出错了,getaddr(4)返回值为64位地址0x6f56f35620,
赋给mmio[0]后,mmio[0]接收到的值却为0xffffffff56f35620!
如果是编译器的原因,应该怎么该程序,才能得到正确的结果呢?
unsigned int addr1;
unsigned char *mmio[1];
void *getaddr(uint32_t offset)
{
...
return (adddr1);
}
mmio[0]=(unsigned char *)getaddr(4);
这里出错了,getaddr(4)返回值为64位地址0x6f56f35620,
赋给mmio[0]后,mmio[0]接收到的值却为0xffffffff56f35620!
如果是编译器的原因,应该怎么该程序,才能得到正确的结果呢?
|
不要怀疑编译器 大家都是用这个编译器,为什么单单你的程序就不行呢
开源软件大多跨平台兼容32位 64位,它们能做到,你的程序也应该多考虑移植的问题
32位 64位最直观的差别是指针长度,最可能引起问题,但是你的程序为何出错,难以结论。还要你仔细分析
开源软件大多跨平台兼容32位 64位,它们能做到,你的程序也应该多考虑移植的问题
32位 64位最直观的差别是指针长度,最可能引起问题,但是你的程序为何出错,难以结论。还要你仔细分析
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。