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." #endifstdint.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 [email protected] https://lists.gnu.org/mailman/listinfo/autoconf
