Re: uint64_t fails with C++

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [GCC Help]     [Kernel Discussion]     [RPM Discussion]     [Red Hat Development]     [Yosemite News]     [Linux USB]     [Samba]

  Powered by Linux