On 17 Feb 2010, at 23:03, David Chisnall wrote: > On 17 Feb 2010, at 22:44, Richard Frith-Macdonald wrote: > >> No, it's a typo made when converting from using the old, reliable, >> LONG_LONG_MAX (basically worked on every platform except perhaps BSD, and >> used to be the default but is now the fallback mechanism) to the newer c99 >> standard (which works on most modern platforms and is now the default, but >> used to be the fallback mechanism). > > Ah, fair enough. > >> I know you are a BSD person, but the reality is that GNUstep is GNU software >> and uses the GNU compiler (GCC) ... so saying something 'will break anywhere >> except GNU platforms' is actually pretty close to saying that it will break >> anywhere that GNUstep doesn't run, and sounds perilously like a religious >> argument. > > > Not at all. It's from limits.h, which is provided by libc. The C standard > defines LLONG_MAX.
It does ... but even now, not all systems conform to the current standard ... and I think this code dates from before the standard (before my time anyway)! > GNU libc and HP-UX libc define LONG_LONG_MAX, but most other libc's that I > checked don't. AIX defines LONGLONG_MAX, others define their own flavour, in > addition to the standard LLONG_MAX. Both the long long type and the > LLONG_MAX macro in limits.h were defined at the same time, as part of C99. Sure, but the type (and the gnu macro) pre-date the standard. I expect the code originally used LONG_LONG_MAX as the de-facto standard at the time it was written. > GCC, on the other hand, has a built-in __LONG_LONG_MAX__, which is set by the > compiler based on the target triple and is used on some libc versions to > initialise LLONG_MAX. I'd have no problems with your using > __LONG_LONG_MAX__, since, as far as I know, this works on all existing > Objective-C compilers that support a long long data type. Let's do that then. > Unless I'm mistaken, GNUstep runs on a lot of non-GNU platforms. If this > isn't the case, maybe someone should delete some of the 11 listed here (not > counting duplicates for different versions or CPU architectures): > > http://gnustep.org/resources/documentation/User/GNUstep/machines_toc.html In terms of support for LONG_LONG_MAX that breaks down to bsd platforms and ones which support LONG_LONG_MAX (linux and mingw/cygwin windows) with solaris being a strange case which has changed from being bsd to sysv over the years and really tends to build with almost an entire gnu toolchain. _______________________________________________ Gnustep-dev mailing list Gnustep-dev@gnu.org http://lists.gnu.org/mailman/listinfo/gnustep-dev