[gdal-dev] RFC 31 - OGR 64bit Fields and FID
ari.jolma at gmail.com
Sun Sep 12 11:32:08 EDT 2010
On 09/11/2010 03:45 AM, Joaquim Luis wrote:
> About the issue of the 64-bits ints on Windows we had quite some
> troubles in GMT while implementing it.
> The problem, as far as I remember and I'm the one who suffered more
> with it (other developers use Macs only), was that one cannot read as
> %ld a variable that is a 64 bits int. There was no compiling or
> running error, but memory was corrupted at totally
> unexpected/unrelated places.
> We have a note in one of our headers that describe it, and the
> solution we adopted
> /* Note: Under Windows 64-bit a 64-bit integer is __int64 and when used
> * with scanf the format must be %lld. This is not exactly what we call
> * POSIX-clean where %ld is expected. Thus, in places where such 64-bit
> * variables are processed we let the compiler build the actual format
> * using the GMT_LL string which is either "l" or "ll"
> #ifdef _WIN64
> typedef __int64 GMT_LONG; /* A signed 8-byte integer under 64-bit
> Windows */
> #define GMT_LL "ll"
> typedef long GMT_LONG; /* A signed 4 (or 8-byte for 64-bit)
> integer */
> #define GMT_LL "l"
> than we use it for example like
> sscanf (p, "%" GMT_LL "d-%" GMT_LL "d", &start, &stop);
> Excuse if this trivia for you guys (it wasn't for us)
Have taken a look at this ticket and discussions?
How 64 bit ints are handled in windows depend on which runtime libs are
> Joaquim Luis
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
More information about the gdal-dev