Безопасно ли строить с помощью -fsigned- char с Android NDK?

Для согласованности с другими платформами мне нужно использовать signed char в некотором собственном коде, над которым я работаю. Но по умолчанию для Android NDK char используется тип unsigned.

Я попытался явно использовать тип signed char, но он генерирует слишком много предупреждений differ in signedness, когда задействованы строковые константные/библиотечные функции, поэтому я хочу построить свой код с помощью -fsigned-char.

Теперь я пытаюсь предвидеть проблемы с Android ARM ABI и API, когда используется -fsigned-char, но я не могу найти любая проблема.

В Стандарт вызова вызова для архитектуры ARM ABI (AAPCS), 7.1.1 Арифметические типы и C Library ABI для архитектуры ARM, 5.6 inttypes.h, char называется unsigned.

Знаете ли вы, есть ли проблемы при использовании библиотеки C (другие библиотеки, доступные на Android), когда -fsigned-char включена в Android NDK?

Ответы

Ответ 1

Я тоже столкнулся с этой проблемой сегодня вечером. char рассматривается как signed на x86, но при запуске на Android-устройстве изменен на unsigned. Это заставляет мои JNI-библиотеки работать неправильно.

После установки LOCAL_CFLAGS := -fsigned-char в Android.mk моя программа работает! В настоящее время я не обнаружил побочного эффекта. Спасибо.