Ok, ich ursprünglich schlecht vermasselte meine Formulierung dieser Frage (es ist mehr als ein Jahr jetzt, da ich C++ Code ernsthaft geschrieben und ich habe ziemlich begrenzte Erfahrung mit reinem C) zu erklären, so Lass es uns erneut versuchen.die richtige Art und Weise C void-Zeiger in Julia
Einig C-Code geschrieben ist zu erwarten, dass Sie so etwas wie die folgenden
void* p;
create_new_thing(&p); //p is now a new thing
do_stuff_to_thing(p); //something happened to p
Meine Frage zu tun ist, wie das Objekt p
in Julia zu erstellen. Im Moment glaube ich, die Antwort
p = Ref{Ptr{Void}}()
ccall((:create_new_thing, :lib), Void, (Ptr{Ptr{Void}},), p)
ccall((:do_stuff_to_thing, :lib), Void, (Ptr{Void},), p)
Darüber zu sein, ich glaube, den gleichen Code aber mit p
erklärte stattdessen als p = Array(Ptr{Void}, 1)
auch funktioniert.
Ich finde jedoch die ganze Unterscheidung zwischen Ref
und Ptr
in Julia sehr verwirrend, vor allem, weil sie scheinen sich gegenseitig auf Wegen umgewandelt werden, die ich nicht im Auge behalten kann.
Detail: mit 'void * p;', 'P' ist eine "neue Sache"(Objekt). 'Create_new_thing (&p);' 'die Funktion _assign_ ermöglicht P' Wert. Viel Glück mit Julia. – chux
Verstanden, ich der Grund, nicht das Wort Objekt wurde ist, dass ich besorgt war sehr spezifisch über zu sein. Eine mit tun könnte, sagt ihnen, ein unveränderlicher numerischer Typ. –
In C _object_ ist der _general_ Begriff für „Bereich der Datenspeicherung ..., dessen Inhalt kann Werte repräsentieren“ wie Zeichen, Zahlen, Gleitkomma, Zeiger, Arrays, Strukturen, Gewerkschaften, und Konstanten. Alles, auf das man mit Ausnahme von Funktionen zeigen kann. – chux