日期:2014-05-16  浏览次数:20678 次

Fedora13_64位系统下地址赋给指针数组出错
代码:
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位最直观的差别是指针长度,最可能引起问题,但是你的程序为何出错,难以结论。还要你仔细分析