Wie stelle ich in Cython-Klebedeklarationen einen C struct
-Typ dar, der eine anonyme Vereinigung enthält? Zum Beispiel, wenn ich eine C-Header-Datei mystruct.h
mit
dann in der entsprechenden .pyd
-Datei
Ich habe es versucht:
%Vor% aber das gab mir nur "Syntaxfehler in der C-Variablendeklaration" in der union
-Zeile.
Für diejenigen, die über Google gekommen sind, habe ich eine Lösung gefunden. Wenn Sie eine Struktur haben:
%Vor%Sie können dies in der Cython-Deklaration wie folgt reduzieren:
%Vor% Cython erzeugt keinen Code, der irgendwelche Annahmen über das Speicherlayout Ihrer Struktur macht; Sie sagen ihm nur die De-facto-Struktur dessen, was Sie anrufen, indem Sie ihm sagen, welche Syntax er erzeugen soll, um sie aufzurufen. Wenn also Ihre Struktur ein Mitglied der Größe int
hat, auf das als ((outer) x).a
zugegriffen werden kann, dann können Sie a
auf die Strukturdefinition werfen und es wird funktionieren. Es geht um Textersetzung, nicht um Speicherlayout, also ist es egal, ob diese Dinge in anonymen Vereinigungen oder Strukturen sind oder was Sie haben.