Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

gcc, width of long int on different architectures

On 64-bit architectures, long int, according to gcc is at least an int64_t. On 32-bit, long int is at least int32_t. With Microsoft compilers, long is always an int32_t, regardless of 32/64-bit. Is there any way to:

  1. Force gcc to treat long as a int64_t, on 32bit? (for ease of testing)
  2. Force gcc to treat long as a int32_t on 64bit? (for compliance with MS's compiler).
like image 941
please delete me Avatar asked Nov 22 '10 10:11

please delete me


People also ask

What is size of int in GCC?

int is 4 bytes in all three OSes on Intel.

What is the size of long int?

Long signed integer type. Capable of containing at least the [−2,147,483,647, +2,147,483,647] range.

Is int in C++ 32-bit?

int is 32 bits in size. long , ptr , and off_t are all 64 bits (8 bytes) in size. The 32-bit data model for z/OS® XL C/C++ compilers is ILP32 plus long long.


1 Answers

Don't do this - use standard types such as int32_t, uint32_t, int64_t, uint64_t, etc from <stdint.h> rather than trying to make assumptions about naked types such as long int or trying to bend the compiler to your will.

Note: The 64-bit model for any given platform (e.g. LP64 for most *nix platforms, Mac OS X, etc) is a given, so even if you could convince the compiler to use a different 64-bit model you would probably break any calls to system code, libraries, etc.

like image 158
Paul R Avatar answered Nov 10 '22 09:11

Paul R