Est-il prudent de construire avec -fsigned-char avec le NDK Android?

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.