2014-01-17 116 views
3

我想在Xcode 4.2上生成一个项目,其中有一些代码将void*转换为int。这种类型转换在C++编译过程中不会导致错误,因为我试过here错误类型转换void指针int

它也工作在我的项目很好,直到我在Build Settings改变Valid Architecturesi386i386 x86_64基本上编译在64位模式下的代码了。自从我致力于项目的减碳工作以来,我不得不进行这一改变。所以,在这个变化之后,引入了很多错误,包括这个我发现有点难以消化的错误。任何想法可能会发生什么?

回答

7

在x86上,void*是32位长,并且int很可能也是32位长,所以一切正常。

但是,在x86_64上,void*是64位长,而int可能会保留32位,因此该值不再适合。

如果您需要将指针存储在整数类型中,请使用专为此目的而设计的intptr_tuintptr_t

+0

谢谢!这确实有道理。 – Sankalp