[GRASS5] r.flow: strange compile error M_PI

Brad Douglas rez at touchofmadness.com
Wed Jun 22 23:03:22 EDT 2005


On Thu, 2005-06-23 at 04:25 +0200, Markus Neteler wrote:
> On Wed, Jun 22, 2005 at 07:04:55PM -0700, Brad Douglas wrote:
> > On Thu, 2005-06-23 at 00:12 +0200, Markus Neteler wrote:
> > > Hi,
> > > 
> > > after an update of the Linux OS, I am no longer able to
> > > compile r.flow:
> > > 
> > > thuille:r.flow[281.25] make
> > > gcc -I/hardmnt/thuille0/ssi/software/cvsgrass61/include -I/hardmnt/thuille0/ssi/software/cvsgrass61/dist.i686-pc-linux-gnu/include/grass  -g -Wall -ansi  -Wall -Wconversion -Wno-implicit-int   -I/usr/local/include     -DPACKAGE=\""grassmods"\"  -I/hardmnt/thuille0/ssi/software/cvsgrass61/include -I/hardmnt/thuille0/ssi/software/cvsgrass61/dist.i686-pc-linux-gnu/include/grass \
> > >         -o OBJ.i686-pc-linux-gnu/aspect.o -c aspect.c
> > > aspect.c: In function `aspect_fly':
> > > aspect.c:50: error: `M_PI' undeclared (first use in this function)
> > > aspect.c:50: error: (Each undeclared identifier is reported only once
> > > aspect.c:50: error: for each function it appears in.)
> > > make: *** [OBJ.i686-pc-linux-gnu/aspect.o] Error 1
> > > 
> > > thuille:r.flow[282.26] cat /etc/issue
> > > Red Hat Enterprise Linux WS release 4 (Nahant Update 1)
> > > Kernel \r on an \m
> > > 
> > > It should be in math.h, right?
> > > How to debug such things?
> > 
> > Yes, it should be in <math.h>, but it's not defined on all systems. I
> > don't understand it being missing from your system, either.
> 
> Sorry, forgot to post that. Yes, it is defined:
> 
> grep M_PI /usr/include/math.h
> # define M_PI           3.14159265358979323846  /* pi */
> # define M_PI_2         1.57079632679489661923  /* pi/2 */
> # define M_PI_4         0.78539816339744830962  /* pi/4 */
> # define M_PIl          3.1415926535897932384626433832795029L  /* pi */
> # define M_PI_2l        1.5707963267948966192313216916397514L  /* pi/2 */
> # define M_PI_4l        0.7853981633974483096156608458198757L  /* pi/4 */
> 
>  
> > Generally, I add the following to the source that uses it:
> > 
> > #ifndef M_PI
> > #define M_PI 3.14...
> > #endif

I believe I have found the culprit.  M_PI is not defined when specifying
the -ansi compiler option.


-- 
Brad Douglas <rez at touchofmadness.com>




More information about the grass-dev mailing list