[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: from 32 to 64



On 07/31/2009 03:12 PM, Patrick Dupre wrote:
> Hello,
>
> I do observe abnormal results with my applications
>
> Moving from a 32 to 64 bits architecture, using, c, C++, perl, is
> they something that I should be aware of ? like size of the
> float, integer ?
>
> Thank.
>
In the C and C++ languages as implemented by GCC on Linux and other Unix
systems use a policy called LP64 for 64-bit systems:
char is 8 bits, short is 16 bits, int is 32 bits (always on 32 and 64
bit systems using LP64).
long is 64-bits (on 64-bit systems, 32-bits on 32-bit systems)
float is always 32-bits
double is always 64-bits
pointers are 64-bits on 64-bit systems, 32-bits on 32-bit systems.

There are a number of programming gothchas that have been well documented.
here is a pointer to some documents on HP (part of which I wrote)
http://docs.hp.com/en/5966-9844/ch03s02.html

But, beware, while Linux and Unix systems have adopted LP64 pretty
universally, other systems use LLP64 and ILP64.

The bottom line when writing programs is not to assume anything. Use
types like int32_t, or int64_t for signed integrals, use size_t for
sizes. That will generally be 32-bit on 32-bit systems and 64-bits on
64-bit systems.

-- 
Jerry Feldman <gaf blu org>
Boston Linux and Unix
PGP key id: 537C5846
PGP Key fingerprint: 3D1B 8377 A3C0 A5F2 ECBB  CA3B 4607 4319 537C 5846


Attachment: signature.asc
Description: OpenPGP digital signature


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]