On 05/01/11 10:15, Gary V. Vaughan wrote: > $ cat ,t.c > #include <stdint.h> > #include "intprops.h" > int main (int argc, char **argv) { > printf("%lu\n", (unsigned long) ULONG_MAX); > printf("%lu\n", (unsigned long) UINT_FAST8_MAX); > return 0; > } > $ cc -I. -I../lib -o ,t ,t.c && ./,t > 4294967295 > 4294967295 > $ cc -I. -I../lib +DD64 -o ,t ,t.c && ./,t > 18446744073709551615 > 4294967295 > > I have no idea why or how that is happening though :(
Surely the '#include "intprops.h"' is unnecessary in the above example, since 'main' uses only symbols that are defined by stdint.h. However, it may be that '#include <stdio.h>' is needed for proper operation. Could you try that test again, without intprops.h, but with stdio.h? Which include file in HP-UX defines UINT_FAST8_MAX? Perhaps that include file is clashing with gnulib's stdint.h. For example, it could be that <limits.h> (which intprops.h includes) redefines UINT_FAST8_MAX to the wrong value. Also, which include file in HP-UX defines uint_fast8_t, and what does it define it to?