From edff6201cefbced4e9f6ff80868c3bd05d6a5cdb Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 10 Nov 2006 15:21:33 +0000 Subject: [PATCH] rearrange tests for long long again to avoid clashes with SIZEOF_LONG_LONG defined by other packages git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43274 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/defs.h | 37 +++++++++++++++++++++++-------------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/include/wx/defs.h b/include/wx/defs.h index 1d1953270f..57c614fc84 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -908,20 +908,17 @@ inline void *wxUIntToPtr(wxUIntPtr p) /* we will need to define this */ #undef wxLongLongIsLong -/* first check for compilers which have the real long long */ -#if (defined(SIZEOF_LONG_LONG) && SIZEOF_LONG_LONG >= 8) || \ - defined(__GNUC__) || \ - defined(__CYGWIN__) || \ - defined(__WXMICROWIN__) || \ - (defined(__DJGPP__) && __DJGPP__ >= 2) - #define wxLongLong_t long long - #define wxLongLongSuffix ll - #define wxLongLongFmtSpec _T("ll") -#elif defined(__WXPALMOS__) - #define wxLongLong_t int64_t - #define wxLongLongSuffix ll - #define wxLongLongFmtSpec _T("ll") -#elif (defined(__VISUALC__) && defined(__WIN32__)) +/* + First check for specific compilers which have known 64 bit integer types, + this avoids clashes with SIZEOF_LONG[_LONG] being defined incorrectly for + e.g. MSVC builds (Python.h defines it as 8 even for MSVC). + + Also notice that we check for "long long" before checking for 64 bit long as + we still want to use "long long" and not "long" for wxLongLong_t on 64 bit + architectures to be able to pass wxLongLong_t to the standard functions + prototyped as taking "long long" such as strtoll(). + */ +#if (defined(__VISUALC__) && defined(__WIN32__)) #define wxLongLong_t __int64 #define wxLongLongSuffix i64 #define wxLongLongFmtSpec _T("I64") @@ -950,8 +947,20 @@ inline void *wxUIntToPtr(wxUIntPtr p) #error "The 64 bit integer support in CodeWarrior has been disabled." #error "See the documentation on the 'longlong' pragma." #endif +#elif defined(__WXPALMOS__) + #define wxLongLong_t int64_t + #define wxLongLongSuffix ll + #define wxLongLongFmtSpec _T("ll") #elif defined(__VISAGECPP__) && __IBMCPP__ >= 400 #define wxLongLong_t long long +#elif (defined(SIZEOF_LONG_LONG) && SIZEOF_LONG_LONG >= 8) || \ + defined(__GNUC__) || \ + defined(__CYGWIN__) || \ + defined(__WXMICROWIN__) || \ + (defined(__DJGPP__) && __DJGPP__ >= 2) + #define wxLongLong_t long long + #define wxLongLongSuffix ll + #define wxLongLongFmtSpec _T("ll") #elif defined(SIZEOF_LONG) && (SIZEOF_LONG == 8) #define wxLongLong_t long #define wxLongLongSuffix l