Charles R Harris wrote:
On Mon, May 11, 2009 at 4:49 PM, Peter Wang
mailto:pwang@enthought.com> wrote: Hey guys,
I've got a small C extension that uses isnan() and (in numpy 1.1) had been importing it from ufuncobject.h. I see that it has now moved into npy_math.h in 1.3.
isnan is a C99 function (more exactly a macro), so we should not have defined it in the first place in public header, strictly speaking. The replacement in numpy 1.3 is npy_nan (and for every math function, replaced with the npy_ prefix).
My best idea right now is to simply do a numpy version check in my setup.py, and hard-code some macros at the top of my C extension to #include the appropriate headers for each version.
Any help or suggestions would be appreciated!
You could just reproduce the logic used for numpy 1.3: check whether isnan is declared in math.h, and if not, use a replacement (the replacement are in npy_math.h - they are guaranteed to work on most platforms where numpy runs). It avoids hardcoding versions, which is often problematic if you need to support many platforms. cheers, David