【问题标题】:Error typecasting void pointer to int将 void 指针类型转换为 int 时出错
【发布时间】:2014-02-06 14:53:11
【问题描述】:

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

在我将 Build Settings 中的 Valid Architecturesi386 更改为 i386 x86_64 之前,它在我的项目中也运行良好,这基本上也可以在 64 位模式下编译代码。由于我正在为该项目脱碳,因此我必须执行此更改。因此,在那次更改之后,引入了许多错误,包括这个我发现有点难以消化的错误。任何想法可能会发生什么?

【问题讨论】:

    标签: c++ xcode cocoa casting


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢!这确实有道理。
    猜你喜欢
    • 2012-02-07
    • 2013-11-18
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    • 2020-01-22
    相关资源
    最近更新 更多