'da C void işaretleyicilerini bildirmenin uygun yolu Tamam, bu soruyu formüle etme biçimimi kötü bir şekilde mahvettim (C++ kodunu ciddi olarak yazdığımdan beri bir yıldan uzun bir süre geçti ve saf C ile oldukça sınırlı bir deneyimim var) Tekrar deneyelim.Julia
Bazı C kodu aşağıdaki
void* p;
create_new_thing(&p); //p is now a new thing
do_stuff_to_thing(p); //something happened to p
Benim soru gibi bir şey yapmak bekliyoruz yazılır Julia nesneyi p
oluşturmak için nasıl. Şu anda ben aynı kodu inanıyorum ama p
ile p = Array(Ptr{Void}, 1)
da çalışır yerine olarak ilan cevap Dahası
p = Ref{Ptr{Void}}()
ccall((:create_new_thing, :lib), Void, (Ptr{Ptr{Void}},), p)
ccall((:do_stuff_to_thing, :lib), Void, (Ptr{Void},), p)
olduğuna inanıyoruz.
Ancak, Julia, Ref
ve Ptr
arasındaki tüm ayrımı çok kafa karıştırıcı buluyorum, çünkü birbirlerini izleyemediğim yollarla birbirlerinden dönüştürülüyorlar.
Detay geçerli: 'void * p ile;' 'P' "yeni bir şey"(nesne) 'dir. "create_new_thing (&p);" işlevi _assign_ 'p' için bir işleve izin verir. Julia ile iyi şanslar. – chux
Kelime nesnesini kullanmamamın nedeni, çok spesifik olmaktan dolayı endişelendiğimi anladım. immutable bir sayısal tip diyelim: –
C, _object_ karakterleri, tamsayılar, kayan nokta, işaretçiler, diziler, yapılar, sendikalar gibi "veri depolama alanı ... içeriği değerleri gösterebilir" için _general_ terimidir ve işlevler hariç tutulabilen her şey hakkında – chux