它是安全的建立与-fsigned-CHAR与Android NDK?它是、安全、fsigned、NDK

2023-09-05 07:42:33 作者:匆匆过客

有关与其它平台的一致性,我需要使用符号的字符在一些本地的code我的工作。但默认情况下在Android NDK字符类型是无符号的。

For consistency with other platforms, I need to use signed char in some native code I'm working on. But by default on Android NDK "char" type is unsigned.

我试图明确使用符号字符类型,但它会产生太多的警告符号不一致所涉及的字符串常量/库函数的时候,所以我希望建立我的code与-fsigned-字符。

I have tried to explicitly use "signed char" type but it generates too many warnings "differ in signedness" when string constant/library functions are involved, so I'm looking to build my code with -fsigned-char.

我现在想关于Android的ARM的 ABI和API  -fsigned-CHAR时使用,但我找不到任何问题呢。

I'm now trying to anticipate problems regarding Android ARM ABI and API when -fsigned-char is used, but I can't find any problem yet.

在过程调用标准的ARM架构 ABI(AAPCS),7.1.1算术类型,和的 C库ABI ARM体系结构的, 5.6 inttypes.h,炭被认为是无符号的。

In Procedure Call Standard for the ARM Architecture ABI (AAPCS), 7.1.1 Arithmetic Types, and C Library ABI for the ARM Architecture , "5.6 inttypes.h, char is said to be unsigned.

你知道吗,如果使用的C库(可在Android上其他库)时,就会有一些麻烦,当-fsigned-CHAR在Android的NDK启用?

Did you know if there Will be some trouble when using C library (others libraries available on Android) when -fsigned-char is enabled in Android NDK ?

推荐答案

我也遇到过这个问题,今晚。 char是当作签署了86,但改为无符号在Android设备上运行时。这使我的JNI的lib将无法正常工作。

I have also encountered this issue tonight. char is treat as signed on x86, but changed to unsigned when run on android device. This make my jni lib don't work properly.

设置LOCAL_CFLAGS后:= -fsigned-CHAR在Android.mk,我的程序运行!目前,我没有发现任何副作用。谢谢你。

After setting LOCAL_CFLAGS := -fsigned-char in Android.mk, my program works! Currently I found no side effect. Thanks.