2014-01-17 117 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