2016-10-16 1 views
0

Je veux utiliser dans mes .pyx types C qui sont typedef declarated dans mon fichier .h:à l'aide de types C déclarés dans le fichier .h

//decls.h 
typedef double Doub 
typedef long int LInt 
//etc... 

Mon travail facile a été de les redéclarer autour de mon *. pxd (c'est-à-dire copier-coller ce bloc de mon .h dans mon .pxd en remplacement de typedef ->ctypedef). Maintenant, j'utilise un autre .h avec beaucoup de déclarations typedef, donc je voudrais une façon plus "cythonique" de déclarer. J'ai lu this, mais ne m'a pas aidé. Peut-être quelque chose comme ?:

# .pxd cython file 
cdef extern from "decls.h": 
    Doub # no idea what to put before `Doub` 

Répondre

0

Si la seule différence est le c dans typedef alors vous pouvez utiliser le préprocesseur C prétraiter le fichier .h dans un fichier qui peut être manipulé par cython. Par exemple:

// a .c file: 
#define CTYPEDEF typedef 
#include "mytypes.h" 

// the "mytypes.h" for cython preprocessing 
#ifndef CTYPEDEF 
# define CTYPEDEF ctypedef 
#endif 
CTYPEDEF ... myType; 

Dans votre makefile ou IDE, faire une règle pour prétraiter le fichier .h puis inclure la sortie dans cython.

S'il y a plus de différences, vous pouvez procéder de la même manière et voir cela comme un exemple.

+0

bien mais je me demandais encore s'il y a une solution comme 'from 'file.h" cimport ctype1, ctype2, ... 'ou un' cdef extern ... ' – jimmy