Cython: Verschachteln einer Union innerhalb einer Struktur

8

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

habe %Vor%

dann in der entsprechenden .pyd -Datei

%Vor%

Ich habe es versucht:

%Vor%

aber das gab mir nur "Syntaxfehler in der C-Variablendeklaration" in der union -Zeile.

    
polerto 17.09.2012, 01:39
quelle

2 Antworten

6

Sie können Deklarationen nach bestem Wissen nicht verschachteln, und Cython unterstützt keine anonymen Vereinigungen AFAIK.

Versuchen Sie Folgendes:

%Vor%

Greifen Sie jetzt auf die Gewerkschaftsmitglieder als un.lower_d und un.lower zu.

    
nneonneo 17.09.2012, 01:54
quelle
6

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.

    
Haldean Brown 15.01.2015 01:12
quelle

Tags und Links