Ok, początkowo źle sparaliżowałem moje sformułowanie tego pytania (jest to ponad rok odkąd poważnie napisałem kod C++ i mam dość ograniczone doświadczenie z czystym C), więc Spróbujmy jeszcze raz.prawidłowy sposób deklarowania wskaźników C void w Julii
Niektóre kod C jest napisane, aby oczekiwać, aby zrobić coś jak na poniższym
void* p;
create_new_thing(&p); //p is now a new thing
do_stuff_to_thing(p); //something happened to p
Moje pytanie brzmi: w jaki sposób utworzyć obiekt p
w Julii. Teraz wierzę, że odpowiedź będzie
p = Ref{Ptr{Void}}()
ccall((:create_new_thing, :lib), Void, (Ptr{Ptr{Void}},), p)
ccall((:do_stuff_to_thing, :lib), Void, (Ptr{Void},), p)
Ponadto uważam ten sam kod, ale zamiast z p
zadeklarowane jako p = Array(Ptr{Void}, 1)
również działa.
Jednak uważam, że całe rozróżnienie pomiędzy Ref
i Ptr
w Julii jest bardzo mylące, głównie dlatego, że wydają się nawracać między sobą w sposób, którego nie mogę śledzić.
Szczegóły: z 'void * p;' 'p' jest "nowa rzecz"(object). 'create_new_thing (&p);' zezwala na funkcję _assign_ 'p' wartość .. Powodzenia z Julią – chux
Zrozumiałem, powodem, dla którego nie użyłem słowa obiekt jest to, że obawiałem się bycia bardzo konkretnym. powiedzmy niezmienny numeryczny typ: –
W języku C, _object_ to _general_ termin dla "regionu przechowywania danych ... którego zawartość może reprezentować wartości" jak znaki, liczby całkowite, zmiennoprzecinkowe, wskaźniki, tablice, struktury, związki, i stałe.Nic prawie wszystko, co można wskazać poza funkcjami – chux