On 12/07/2011 12:08 PM, Werner LEMBERG wrote:
#if defined UINT64_MAX || defined uint64_t
typedef uint64_t TA_ULongLong;
#else
# error "No unsigned 64bit wide data type found."
#endif
stdint.h will not define UINT64_MAX if __cplusplus is defined unless
__STDC_LIMIT_MACROS is defined before you include it.
Thanks. However, this still doesn't explain why autoconf (using g++!)
says that uint64_t exists: __STDC_LIMIT_MACROS is not used in any part
of autoconf.
Am I missing something?
Werner
PS: If using __STDC_LIMIT_MACROS is the `official' way to handle
uint64 I suggest to update the autoconf documentation accordingly.
It's nothing to do with autoconf really, configure correctly finds
uint64_t, your C program then checks for UINT64_MAX or a uint64_t macro
instead of #include <config.h> and checking for HAVE_UINT64_T.
C++ compilers do not get these definition from stdint.h unless
__STDC_LIMIT_MACROS is defined, the macros are in C99 and later, but
were not in the C++ standard of the day (I don't know if they're in
later C++ standards), so aren't defined for C++ compilers by default.
Peter
_______________________________________________
Autoconf mailing list
Autoconf@xxxxxxx
https://lists.gnu.org/mailman/listinfo/autoconf