2011-09-14 8 views
6

Per coerenza con altre piattaforme, ho bisogno di usare signed char in un codice nativo su cui sto lavorando. Ma per impostazione predefinita su Android NDK il tipo char è unsigned.È sicuro creare con -fsigned-char con Android NDK?

ho cercato utilizzare in modo esplicito signed char tipo ma genera troppi avvertimenti differ in signedness quando stringa funzioni costanti/libreria sono coinvolti, quindi sto cercando di costruire il mio codice con -fsigned-char.

Attualmente sto cercando di anticipare i problemi relativi a Android ARM ABI and API quando viene utilizzato -fsigned-char, ma non riesco ancora a trovare alcun problema.

In Procedure Call Standard for the ARM Architecture ABI (AAPCS), 7.1.1 Tipi aritmetiche, e C Library ABI for the ARM Architecture, 5.6 inttypes.h, char si dice che sia unsigned.

Sapevate se ci saranno problemi nell'usare la libreria C (altre librerie disponibili su Android) quando -fsigned-char è abilitato in Android NDK?

risposta

4

Ho riscontrato questo problema anche stasera. char viene considerato come signed su x86, ma modificato in unsigned quando viene eseguito su dispositivo Android. Questo fa sì che le mie librerie JNI non funzionino correttamente.

Dopo aver impostato LOCAL_CFLAGS := -fsigned-char in Android.mk, il mio programma funziona! Attualmente non ho trovato alcun effetto collaterale. Grazie.

Problemi correlati