Feature Conditional for M_PI

Joel Sherrill <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <CAF9ehCV3Mqp8Mns1QBeaQ-KbPdtQ4G_wpLK0sm9J46gZSU=-Mg@mail.gmail.com>
Hi

I was porting some code from Linux to Cygwin and came across this. M_PI in
math.h is defined by POSIX as part of XSI. It does not appear to be part of
C99 or C++03.  I have this cut down to show the problem:

==========================
#include <math.h>

double pi = M_PI;
==========================

And this script to try various feature defines and compilers:

===========================
GCC=${GCC:-g++}

${GCC} -c m.c
${GCC} -D_XOPEN_SOURCE=700 -c m.c
${GCC} -D_POSIX_C_SOURCE=200809L -c m.c
${GCC} -D_XOPEN_SOURCE=700 -c -D_POSIX_C_SOURCE=200809L -c m.c
===========================

All of those compiler invocations work on Linux but the third one does not
work on Cygwin or RTEMS which use newlib.

Is the proper thing to do to add  -D_XOPEN_SOURCE=700 when compiling this
program?

Just curious if Linux is defining _XOPEN_SOURCE by default and newlib
doesn't. Not sure what's the right answer. So asking.

Thanks

--joel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.