“程序员指南和规范”一书的第3章说:“原始类型的映射很简单”,我对这个句子有点困惑。由于我们知道c数据类型的大小是不确定的,它取决于程序运行的环境,复杂的.例如int类型的大小可以是2字节或4字节。但是java数据类型的大小是definite.the,int的大小是4个字节。
因此,jni如何清楚地映射java和c/c++之间的数据类型。
如有任何答案,将不胜感激!
发布于 2013-10-07 05:46:20
在C中,有一个名为stdint.h的模块,它定义了int64_t、int32_t和friends类型,使映射变得“简单”。
但是您应该注意到,在任何特定的C实现中,都没有精确地指定普通旧int的大小。作者确实对“直截了当”这个词很不理解,并且假设您会把这个声明理解为“Java的int映射到C带符号的32位整数类型”。
发布于 2013-10-07 16:05:36
jni.h头定义了适当的基元类型: jint、jlong、jchar等等。声明这些值是为了匹配相应Java原语的大小。在您的JNI代码中使用这些。
https://stackoverflow.com/questions/19217785
复制相似问题