Перевести заголовки на 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

но не работает.


Конечно, я всегда могу использовать этот метод, но я надеюсь, что мы можем быть более последовательными.

0 ответов

Другие вопросы по тегам