Перевести заголовки на Cython
Реально ли для Cython иметь возможность переводить заголовки C в Cython-директивы? (См. Здесь, в условной компиляции). Аналогичное предложение было сделано и здесь.
В моем случае я хотел бы, чтобы эти C-директивы были в моем.h:
/* myheader.h */
#define MONIT_STEP 1 // stuff for step monit
//#define MONIT_SCATTERING 1 // monitor particle scattering
#define clight (3.0*1e10)
//#define NORM(x,y,z) (sqrt(x*x+y*y+z*z)) // maybe this is too much to ask?
быть переведенным на:
# cython_header.pyx
DEF MONIT_STEP = 1
DEF clight = (3.0*1e10)
Так что позже я могу сделать:
include "cython_header.pyx"
в любом другом .pyx
код, который я хочу скомпилировать. Конечно, я подразумеваю возможность игнорировать любой символ после любой строки "//" в myheader.h
,
Я оставил NORM(x,y,z)
прокомментировал, поскольку я не вижу, чтобы это было тривиально реализовать из-за его "функциональной" природы (то есть это не просто копирование-вставка).
Я думал, что смогу поймать C-препроцессор с помощью этого (см. Документацию по Cython в разделе "Ссылки на заголовочные файлы C"):
cdef extern from "spam.h":
pass
но не работает.
Конечно, я всегда могу использовать этот метод, но я надеюсь, что мы можем быть более последовательными.