java - Java 编程语言中的数据类型如何映射到 native 编程语言(例如 C 和 C++)中的数据类型,具体来说

标签 java c++ c android-ndk java-native-interface

《Java native 接口(interface)程序员指南和规范》一书的第 3 章说“基本类型的映射很简单”,我对这句话有点困惑。 我们知道c数据类型的大小是不确定的,它取决于程序运行、编译的环境... 比如int类型的大小可能是2字节或者4字节。 但是java数据类型的大小是确定的,int的大小是4个字节。

那么,jni如何清晰地映射java和c/c++之间的数据类型。

任何答案将不胜感激!

最佳答案

嗯,在 C 语言中,有一个名为 stdint.h 的模块它定义了类型 int64_tint32_t 和 friend ,这确实使映射变得“简单”。

但是您注意到,在任何特定的 C 实现中,普通旧 int 的大小都没有准确指定。作者确实对“直接”这个词相当宽松,并假设您会将该声明理解为“Java 的 int 映射到 32 位的 C 有符号整数类型。”

关于java - Java 编程语言中的数据类型如何映射到 native 编程语言(例如 C 和 C++)中的数据类型,具体来说,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19217785/

相关文章:

c++ - 引用数据成员和 move 构造函数

c - ‘sockaddr_in 6’ 未声明的错误,即使包含了头文件

SSJS xpages 中的 java 结构体数组

java - 如何将多个参数移动到 jackson 中的另一个节点?

c++ - 如何用OpenCV解决图像处理相机IO延迟

c - 我是否需要担心 "no shell will be available"来执行系统命令?

c - 双向链表中的插入和删除

java - 如何从 Android 中的父 Activity 调用 Fragment 方法

java - 打印对象并获取Java中的具体内容

c++ - 如何获取给定给dlopen的相对路径对应的绝对库文件名?