From: Alan W. I. <ir...@be...> - 2005-10-25 21:27:22
|
On 2005-10-25 21:29+0200 Werner Smekal wrote: > Hi, > > I would like to propose a change for plshade.c: > > I would like to rename the function poly() in plshade.c and all calls to that > function to plpoly() or something like that. The reason for this is, that I > made a makefile for the borland compiler 5.5 (free edition) and poly() is > already defined which leads to compiler errors. Since this function is only > used in this file, I see no problems in renaming this function, or? This > would make it possible to have the plplot library compiling also with > different compilers on Windows (using the wxwidgets/ps/png driver). I don't mind a bit changing the name (since this function is completely internal to plshade.c). However, I don't understand why there is a name clash since this function is declared static and therefore it should be completely internal to plshade.c and not interfere with anything else. I am still trying to learn some of the exotica of C so this may be a dumb question for the C experts here, but why doesn't the static declaration of poly(...) in plshade.c protect against such name clashes? If the answer is "it should" (i.e., the borland compiler 5.5 is broken) that's fine and we can change the name anyhow to avoid the name clash for that compiler, but it's best to know why such name-clash avoiding changes are required. To make the example even more obvious, in C aren't you free to define your own static sin function for our own version of the sine routine or is "sin" disallowed for static function names because there is a math library function of that name? In fact I just answered that question with the following code: cat test.c #include <stdio.h> #include <math.h> static double sin(double x); double sin(double x) { return(x); } int main(void) { double x; int i; for(i=0; i < 100; i++) { x = ((double)i)*0.01; printf("x = %10.2f, sin(x) = %10.2f\n", x, sin(x)); } return(0); } "gcc -pedantic -ansi -Wall test.c -lm" didn't complain a bit, and on execution it gave the "correct" results (sin(x) = x as expected from the local function rather than what you get from the math library). If I remove the static declaration and the definition of the local sin function, then the math library version is used as expected. Werner, if you try the above test code with your Borland compiler does it complain? If not, what is the exact error message you get with plshade.c? Alan __________________________ Alan W. Irwin email: ir...@be... phone: 250-727-2902 Astronomical research affiliation with Department of Physics and Astronomy, University of Victoria (astrowww.phys.uvic.ca). Programming affiliations with the FreeEOS equation-of-state implementation for stellar interiors (freeeos.sf.net); PLplot scientific plotting software package (plplot.org); the Yorick front-end to PLplot (yplot.sf.net); the Loads of Linux Links project (loll.sf.net); and the Linux Brochure Project (lbproject.sf.net). __________________________ Linux-powered Science __________________________ |