使用 Android NDK 使用 -fsigned-char 进行构建安全吗?
为了与其他平台保持一致,我需要在我正在处理的一些本机代码中使用 signed char
。但默认情况下,Android NDK 的 char
类型为 unsigned
。
我尝试显式使用 signed char
类型,但当涉及字符串常量/库函数时,它会生成太多警告符号性不同
,所以我正在构建我的代码与-fsigned-char
。
我现在正在尝试预测有关 Android ARM 使用 -fsigned-char
时的 ABI 和 API,但我还没有发现任何问题。
在 ARM 的过程调用标准建筑学 ABI (AAPCS)、7.1.1 算术类型和 ARM 架构的 C 库 ABI,5.6 inttypes.h,char
据说是未签名
。
您是否知道在 Android NDK 中启用 -fsigned-char
时使用 C 库(Android 上可用的其他库)时是否会出现一些问题?
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
.
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
.
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.
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
.
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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我今晚也遇到这个问题了。
char
在 x86 上被视为signed
,但在 Android 设备上运行时更改为unsigned
。这使得我的 JNI 库无法正常工作。在 Android.mk 中设置
LOCAL_CFLAGS := -fsigned-char
后,我的程序可以运行了!目前我没有发现副作用。谢谢。I have also encountered this issue tonight.
char
is treat assigned
on x86, but changed tounsigned
when run on Android device. This make my JNI libs don't work properly.After setting
LOCAL_CFLAGS := -fsigned-char
in Android.mk, my program works! Currently I found no side effect. Thanks.