Безопасно ли строить с помощью -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 моя программа работает! В настоящее время я не обнаружил побочного эффекта. Спасибо.