From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael David Crawford Subject: Casting 64-bit pointers to integers Date: Fri, 22 May 2009 02:30:35 -0700 Message-ID: <4A1670BB.90101@prgmr.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org In building on my 64-bit Xeon box, I see a lot of warnings about casting between pointers and integers of different sizes. Sometimes it can cause fatal compiler error. Is there a reasonably portable way to make such casts? The conventional wisdom is that ints are supposed to be the natural machine word size. But even that isn't always the case - much gnashing of teeth resulted in the two most popular compilers for the 68000 Macintosh having different int sizes. There are typedefs for integers with specific numbers of bits, but that's not what we want. If we're building for 32-bit, we want a 32-bit integer, and if we're building for 64-bit, we want a 64-bit integer. Is there any kind of standardized integer type which is guaranteed to be the same size as a pointer? What might even be worse is that the mismatch is on purpose for some reason, say that some structure has a field that simply *must* be 32-bits, but we're trying to wedge a 64-bit pointer into it. Mike -- Michael David Crawford mdc@prgmr.com prgmr.com - We Don't Assume You Are Stupid. Xen-Powered Virtual Private Servers: http://prgmr.com/xen