[PYTHON] Beim Lesen der C ++ - Struktur mit Cython

Da C ++ strcut eine spezielle Definition von Klasse ist, ist es besser, cdef cpp class anstelle von cdef struct zu verwenden. In clang funktioniert die Verwendung von cdef struct beim Lesen einer Struktur, die nichts erbt oder tut, nicht (Stand August 2015).

Ich weiß nicht, was ich beim Lesen der geerbten Struktur tun soll, da sie nirgendwo in der Cython-Dokumentation geschrieben ist.

Referenz

Wenn cdef struct

hoge.h


typedef struct {
    int moke;
    double fuga;
} HogeStruct;

hoge.pxd


cdef extern from "hoge.h" nogil:
    cdef struct HogeStruct:
        int fuga
        double piyo

hoge.pyx



def foo():
    cdef HogeStruct bar


Wenn Sie dies tun, wird `ausgearbeiteter Typ auf ein typedef in der Struktur HogeStruct-Leiste in pyx angezeigt. `` struct HogeStruct __pyx_v_bar;` `` wird generiert, sodass es mit der Definitionsanweisung der Struktur selbst in Konflikt steht.

benutze die cpp Klasse

Insbesondere können Sie cppclass anstelle von struct verwenden.

hoge.h


typedef struct {
    int moke;
    double fuga;
} HogeStruct;

hoge.pxd


cdef extern from "hoge.h" nogil:
    cdef cppclass HogeStruct:
        int fuga
        double piyo

hoge.pyx



def foo():
    cdef HogeStruct bar

das ist alles.

Recommended Posts

Beim Lesen der C ++ - Struktur mit Cython
Hinweis zur Codierung bei LANG = C in Python
Verwenden Sie pydantic beim Lesen von Umgebungsvariablen in Python
Verarbeiten Sie Signale in C-Sprache
Greifen Sie auf MongoDB in C zu
Weiter Python in C-Sprache
C-API in Python 3
Einbettung der Maschinensprache in die Sprache C.
Heap-Sortierung in C-Sprache
Verwenden Sie reguläre Ausdrücke in C.
Nachahmung von Pythons Numpy in C #
Binäre Suche in Python / C ++
Achtung bei os.mkdir in Python
Minimaler Gesamtflächenbaum in C #
Beschleunigen Sie die Verarbeitung mithilfe des C ++ - Vektors unordered_map intern in Cython