On Tue, Mar 11, 2003 at 10:39:31AM +0100, Sebastiaan wrote: > I have an odd thing with the math library and C. Take this simple program > as example: > > #include <math.h> > > double y1; > int main(void) > { > return 0; > } > > > When I try to compile this (just 'gcc test.c'), the compiler returns me > this error: > > test.c:4: `y1' redeclared as different kind of symbol > /usr/include/bits/mathcalls.h:242: previous declaration of `y1' > > > I know that you should try to declare as few globals as possible, but I > had to compile a program with this issue from a friend (who runs windoze). > > Isn't this a bug in the C library? I mean, the standard libraries ought > not to be interfering with the variables you choose?
Well, y1() is specified as a mathematical function in SUSv2 (http://www.opengroup.org/onlinepubs/007908799/xsh/y0.html) and SUSv3 (http://www.opengroup.org/onlinepubs/007904975/functions/y0.html); I think it predates those standards too. So this is a standard function that applications should steer clear of. You could '#define __STRICT_ANSI__' at the top of the program if you want the C library to define only what's in bare ISO Standard C, or '#define _ISOC99_SOURCE' for C99. With either of those y1() won't be defined. -- Colin Watson [EMAIL PROTECTED] -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]