Listing 2

/* test limits macros
 * copyright (c) 1991 by P.J. Plauger
 */
#include <limits.h>
#include <stdio.h>

/* test basic properties of limits.h macros
 */
int main()
	{
<%-2>#if CHAR_BIT < 8 || CHAR_MAX < 127 || 0 < CHAR_MIN \
<%0>	|| CHAR_MAX != SCHAR_MAX && CHAR_MAX != UCHAR_MAX
#error bad char properties
#endif
#if INT_MAX < 32767 || -32767 < INT_MIN \
	|| INT_MAX < SHRT_MAX
#error bad int properties
#endif
#if LONG_MAX < 2147483647 \
	|| -2147483647 < LONG_MIN \
	|| LONG_MAX < INT_MAX
#error bad long properties
#endif
#if MB_LEN_MAX < 1
#error bad MB_LEN_MAX
#endif
#if SCHAR_MAX < 127 || -127 < SCHAR_MIN
#error bad signed char properties
#endif
#if SHRT_MAX < 32767 || -32767 < SHRT_MIN \
	|| SHRT_MAX < SCHAR_MAX
#error bad short properties
#endif
#if UCHAR_MAX < 255 || UCHAR_MAX <= 2 * SCHAR_MAX
#error bad unsigned char properties
#endif
#if UINT_MAX < 65535 || UINT_MAX <= 2 * INT_MAX \
	|| UINT_MAX < USHRT_MAX
#error bad unsigned int properties
#endif
<%4>#if ULONG_MAX < 4294967295 \
	|| ULONG_MAX <= 2 * LONG_MAX \
<%0>	|| ULONG_MAX < UINT_MAX
#endif
<%-2>#if USHRT_MAX < 65535 || USHRT_MAX <= 2 * SHRT_MAX \
<%0>	|| USHRT_MAX < UCHAR_MAX
#error bad unsigned short properties
#endif
	puts("SUCCESS testing <limits.h>");
	return (0);
	}

