Лучше всего, если у вас есть последняя библиотека C, - include <stdint.h>
и использовать uint64_t
, int64_t
, uint32_t
, int32_t
. Это будет работать независимо от модели базовой платформы.
Но если вам любопытно, основная проблема заключается в том, что разные системы используют разные модели. В 32-битных системах и Posix, и Windows используют ILP32, что означает, что целое число, long и точка имеют длину 32 бита.
Для 64 битов Posix и Windows используют разные модели.
Posix обычно использует LP64, что означает 32-битные целые, 64-битные и 64-битные указатели.
Windows использует LLP64, что означает 32-битные целые и длинные, 64-битные длинные и 64-битные указатели.