How can I check the version of the python API at compile time?

I am writing a python module in C. The module needs to be compiled for python version 2.4, 2.5, 2.6 and 2.7.

Now I ran in to the problem that in python 2.5 they defined Py_ssize_t for the size of lists, but in 2.4 they just used int.

So my question is: Is there an easy way to check if I'm using the API of version 2.4 or 2.5 at compile time so I can write a little macro?

e.g:

#if PY_MINOR < 5
typedef int Py_ssize_t;
#endif

Answers


Yes, patchlevel.h in the Python include dir defines what you are looking for:

#define PY_MAJOR_VERSION    2
#define PY_MINOR_VERSION    5
#define PY_MICRO_VERSION    2

I think what you need is PY_VERSION_HEX

there is one line in c code generated by cython

PY_VERSION_HEX < 0x02040000

#ifndef Py_PYTHON_H
  #error Python headers needed to compile C extensions, please install development version of Python.
#elif PY_VERSION_HEX < 0x02040000
  #error Cython requires Python 2.4+.
#else

Need Your Help

Changing date format on php link cakephp

cakephp date format

The following code is the output into a table where I have a list of dates which are also hyperlinks to an event on that date. It currently displays YMD and I would like it to display DMY.

JavaScript error: 'moment' is undefined in Full Calendar Jquery plugin

jquery asp.net-mvc-5 fullcalendar

I am using JQuery FullCalendar control in my ASP.Net MVC 5 application. I have followed the steps exactly as given in this tutorial