Subject: 2.0 double definition in math.h
To: None <>
From: =?ISO-8859-1?Q?C=E9sar_Catri=E1n?= C. <>
List: current-users
Date: 08/28/2004 00:07:30

I had this problem trying to build a package.

In file included from /usr/include/g++/cmath:51,
                 from /usr/include/g++/bits/locale_facets.tcc:41,
                 from /usr/include/g++/locale:47,
                 from /usr/include/g++/bits/istream.tcc:37,
                 from /usr/include/g++/istream:768,
                 from /usr/include/g++/sstream:44,
                 from anytype.h:23,
                 from CNestedDataFile.h:135,
                 from CNestedDataFile.cpp:35:
/usr/include/math.h:384: error: declaration of C function `float rintf(floa=
   conflicts with
/usr/include/math.h:258: error: previous declaration `double rintf(double)'=

-- This is the line 384

 * Float versions of functions callable from C, intended to support
 * IEEE arithmetic.
float   copysignf __P((float, float));
int     ilogbf __P((float));
float   rintf __P((float));
float   scalbnf __P((float, int));

-- and this is the line 258

/* int signbit(real-floating x) */
#define signbit(__x)    __fpmacro_unary_floating(signbit, __x)

double  round __P((double));
float   roundf __P((float));

#endif /* !_ANSI_SOURCE && ... */
#if !defined(_ANSI_SOURCE) && !defined(_POSIX_C_SOURCE) || \
    !defined(_XOPEN_SOURCE) || \
    ((__STDC_VERSION__ - 0) >=3D 199901L) || \=20
    ((_POSIX_C_SOURCE - 0) >=3D 200112L) || \
    defined(_ISOC99_SOURCE) || defined(_NETBSD_SOURCE)

why double round __P((double)); was replaced by double rintf(double) at com=
pile time? I don't know.


C=E9sar Catri=E1n C.