Pour assurer la cohérence avec les autres plates-formes, je dois utiliser le caractère signed char
dans le code natif sur lequel je travaille. Mais par défaut sur Android, le type de caractère NDK n’est unsigned
.
J’ai essayé d’utiliser explicitement le type de caractère signed char
mais celui-ci génère trop d’avertissements dont la differ in signedness
est differ in signedness
lorsque des fonctions constantes de chaîne / bibliothèque sont impliquées. Je cherche donc à construire mon code avec -fsigned-char
.
J’essaie maintenant d’anticiper les problèmes concernant ABI et API Android ARM lorsque l’ -fsigned-char
est utilisée, mais je ne trouve pas encore de problème.
Dans Procedure Call Standard pour ABI Architecture ARM (AAPCS) , 7.1.1 Types arithmétiques et ABI de bibliothèque C pour Architecture ARM , 5.6 inttypes.h, le caractère est dit unsigned
.
Saviez-vous si l’utilisation de la bibliothèque C (d’autres bibliothèques disponibles sur Android) -fsigned-char
lorsque l’ -fsigned-char
est activée dans le NDK Android?
J’ai aussi rencontré ce problème ce soir. char
est considéré comme signed
sur x86, mais changé en unsigned
lorsqu’il est exécuté sur un appareil Android. Cela rend mes bibliothèques JNI ne fonctionnent pas correctement.
Après avoir défini LOCAL_CFLAGS := -fsigned-char
dans Android.mk, mon programme fonctionne! Actuellement, je n’ai trouvé aucun effet secondaire. Merci.