2011-09-14 27 views
6

Để nhất quán với các nền tảng khác, tôi cần sử dụng signed char trong một số mã gốc mà tôi đang làm việc. Nhưng theo mặc định trên Android NDK char loại là unsigned.Có an toàn để xây dựng bằng -fsigned-char với NDK của Android không?

Tôi đã cố gắng sử dụng rõ ràng loại signed char nhưng nó tạo quá nhiều cảnh báo differ in signedness khi chuỗi liên tục/chức năng thư viện có liên quan, vì vậy tôi đang tìm cách tạo mã của mình với -fsigned-char.

Tôi hiện đang cố gắng dự đoán các sự cố liên quan đến Android ARM ABI and API khi sử dụng -fsigned-char nhưng chưa tìm thấy bất kỳ sự cố nào.

Trong Procedure Call Standard for the ARM Architecture ABI (AAPCS), 7.1.1 Các loại số học và C Library ABI for the ARM Architecture, 5.6 inttypes.h, char được cho là unsigned.

Bạn có biết sẽ gặp một số rắc rối khi sử dụng thư viện C (các thư viện khác có sẵn trên Android) khi -fsigned-char được bật trong Android NDK?

Trả lời

4

Tôi cũng đã gặp sự cố này tối nay. char được coi là signed trên x86, nhưng được đổi thành unsigned khi chạy trên thiết bị Android. Điều này làm cho libs JNI của tôi không hoạt động đúng.

Sau khi đặt LOCAL_CFLAGS := -fsigned-char trong Android.mk, chương trình của tôi hoạt động! Hiện tại tôi không thấy tác dụng phụ. Cảm ơn.

Các vấn đề liên quan