[gdal-dev] RFC 31 - OGR 64bit Fields and FID
Ari Jolma
ari.jolma at gmail.com
Sun Sep 12 11:32:08 EDT 2010
On 09/11/2010 03:45 AM, Joaquim Luis wrote:
>
> Hi,
>
> 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"
> #else
> typedef long GMT_LONG; /* A signed 4 (or 8-byte for 64-bit)
> integer */
> #define GMT_LL "l"
> #endif
>
>
> 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)
Joaquim,
Have taken a look at this ticket and discussions?
http://trac.osgeo.org/gdal/ticket/2649
How 64 bit ints are handled in windows depend on which runtime libs are
used.
Best regards,
Ari
>
> Joaquim Luis
>
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/gdal-dev
More information about the gdal-dev
mailing list