Robert Elz <kre@munnari.OZ.AU> writes:
I had been wondering about the need for nitems_max as a variable though and wondered if perhaps
#define NITEMS_MAX (PTRDIFF_MAX - WORK_AROUND_QTBUG_53071) ptrdiff_t amax = NITEMS_MAX < SIZE_MAX ? NITEMS_MAX : SIZE_MAX;
might not work just as well, and avoid (at least) the gcc warning (though I am yet to actually test this hypothesis). It will probably fall foul of the "constant comparison" warning though. Ugh!!!
Yeah, I'd been wondering about that too, but it seems unlikely to avoid warnings. What about doing the comparison in an #if? #define NITEMS_MAX (PTRDIFF_MAX - WORK_AROUND_QTBUG_53071) #if NITEMS_MAX < SIZE_MAX #define AMAX ((ptrdiff_t) NITEMS_MAX) #else #define AMAX ((ptrdiff_t) SIZE_MAX) #endif ... then use AMAX in place of the variable ... regards, tom lane