Path: csiph.com!eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "CarMas" Newsgroups: it.comp.java Subject: Lavorando con JNI... il tipo int?? Date: Thu, 17 Sep 2015 14:27:03 +0200 Organization: Aioe.org NNTP Server Lines: 21 Message-ID: NNTP-Posting-Host: Jh61bR30x5y7X0/N4gVs4Q.user.speranza.aioe.org Mime-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 8bit X-Complaints-To: abuse@aioe.org X-MimeOLE: Produced By Microsoft MimeOLE V15.4.3555.308 X-Notice: Filtered by postfilter v. 0.8.2 X-Newsreader: Microsoft Windows Live Mail 15.4.3555.308 Importance: Normal X-Priority: 3 X-MSMail-Priority: Normal Xref: csiph.com it.comp.java:8526 Salve a tutti, stavo rivedendo dei vecchi pezzi di codice e mi è sorto un dubbio su una chiamata JNI. Ho un metodo che accetta un array di interi, che nel codice nativo vengono acquisiti come da manuale, quindi col GetIntArrayElements che ritorna un jint*. Fin qui tutto bene... poi questo "array" viene passato ad un metodo generico di calcolo, che essendo generico accetta un void*. In fase di elaborazione, a runtime viene fatto il cast a int* e vi si accede come sempre. Sembrerebbe tutto funzionare, se non fosse che passandoci casualmente con il mouse, il visualstudio mi abbia detto che in realtà la typedef del jint non è int come mi aspettavo, bensì long. E qui nascono le mie perplessità: il metodo di calcolo è sbagliato??? dovrebbe castare il puntatore ricevuto a long invece che int?? sta funzionando tutto esclusivamente per caso perché in questa architettura sia int che long hanno lo stesso sizeof? ovvero sono a 32bit con segno (http://docs.oracle.com/javase/8/docs/technotes/guides/jni/spec/types.html) ? Grazie per chi mi illuminerà la mente in questa confusione quotidiana CarMas