错误类型转换void指针指向int

时间:2014-01-17 10:10:03

标签: c++ xcode cocoa casting

我正在尝试在Xcode 4.2上构建一个项目,其中有一些代码将void*标记为int。当我尝试here时,这种类型转换在c ++编译期间不会导致错误。

我的项目工作正常,直到我将Valid Architectures中的Build Settingsi386更改为i386 x86_64,这基本上也编译了64位模式下的代码。我不得不执行此更改,因为我正致力于对项目进行去碳化。所以,在那次改变之后,引入了许多错误,包括我发现有点难以消化的错误。有什么想法可能会发生什么?

1 个答案:

答案 0 :(得分:8)

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

但是,在x86_64上,void*长度为64位,而int可能保持32位,因此该值不再适用。

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