cer*_*am1 2 android android-ndk
当我使用 ndk-build 编译时,它显示一条错误消息:
警告:格式 '%zd' 需要类型为 'signed size_t' 的参数,但参数 5 的类型为 'ssize_t'。
我以为ssize_t是一样的signed size_t,我错了吗?
在 Android 中,size_t是unsigned int,但是ssize_t是long int。要打印或记录ssize_t,只需使用"%ld"。
请参阅sys/types.h:
传统上,bionic 的 ssize_t 是“long int”。当您将 ssize_t 传递给 printf 样式的函数时,这会导致 GCC 发出警告。正确的类型是 __kernel_ssize_t,它是“int”,这不是 C 代码的 ABI 更改(因为它们的大小相同),而是 C++ 的 ABI 更改,因为“int”和“long int”损坏为“ i" 和 "l" 分别。因此,在我们修复 ABI 之前,不应将此更改传播到 NDK。http://b/8253769。
需要注意的是在其他平台上,使用%zd是prefferable。
| 归档时间: |
|
| 查看次数: |
1495 次 |
| 最近记录: |