On Sun, 12 Mar 2000, John Polstra wrote:
> Sheesh, criticism isn't enough? Now it has to be constructive too? ;-)
>
> I guess it could go into <machine/limits.h> in the
> "!defined(_ANSI_SOURCE)" section. Bruce might have a better idea.
This is the same as putting it in <limits.h> in the
"!defined(_ANSI_SOURCE)" section. Anyway, the names should be FOO_MAX,
not MAX_FOO.
In C99, there are about 50 *_MAX and *_MIN values defined in <stdint.h>
for Standard C types alone.
I would prefer standard maxof() and minof() interfaces that work on
any arithmetic type. These can almost be written in portable C, at
least in C89 where types are restricted to char, signed char, ...,
long double:
#define isfloat(type) ((type)0.5 != 0)
#define issigned(type) ((type)-1 < 0)
#define isschar(type) (!isfloat(type) && issigned(type) && sizeof(type) == 1)
#define isuchar(type) (!isfloat(type) && !issigned(type) && sizeof(type) == 1)
...
#define maxof(type) ((type)(isschar(type) ? SCHAR_MAX :
isuchar(type) ? UCHAR_MAX ...))
Bruce
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message