http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46155
--- Comment #8 from joseph at codesourcery dot com <joseph at codesourcery dot com> 2010-10-24 15:21:44 UTC --- On Sun, 24 Oct 2010, david.kirkby at onetel dot net wrote: > I don't have a copy of the C standard. Is there one publicly available? In > your > opinion, are IBM wrong to define fprnd_t in /usr/include/float.h? AIX 5.3 is a > POSIX certified operating system. http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf (the standard as consolidated with subsequent TCs) POSIX reserves *_t. ISO C does not. An ISO C program may do: #define fprnd_t something random #include <float.h> (A POSIX program would need to define a feature test macro such as _POSIX_C_SOURCE, at which point fprnd_t becomes reserved, although the function names you listed still aren't reserved.) > > I haven't seen documentation for those functions and types, but they sound > > rather like they should be obsoleted by the standard <fenv.h> facilities > > such as fegetround and fesetround. > > According to > > http://www.gnu.org/software/gnulib/manual/html_node/fesetround.html > > fegetround() is not very portable, so I doubt the GSL developers would want to > use that. I've found GSL to be very portable. It seems to build on just about > anything - except AIX, unless one makes a few changes to a source file. All the systems listed there are old systems. ISO C99 was published on 1 December 1999 - nearly 11 years ago. It appears that GSL has code that uses the C99 interfaces (fp-gnuc99.c). I'd advise using that in preference to all the other pre-C99 OS-specific interfaces, whenever the C99 interfaces are available, rather than as the very last alternative. If AIX supports the C99 interfaces, that solves your problem.