Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java编程语言中的数据类型如何映射到本地编程语言(如C和C+)中的数据类型+;,明确地_Java_C++_C_Android Ndk_Java Native Interface - Fatal编程技术网

Java编程语言中的数据类型如何映射到本地编程语言(如C和C+)中的数据类型+;,明确地

Java编程语言中的数据类型如何映射到本地编程语言(如C和C+)中的数据类型+;,明确地,java,c++,c,android-ndk,java-native-interface,Java,C++,C,Android Ndk,Java Native Interface,《Java本机接口程序员指南和规范》(the Java Native Interface Programmer's Guide and Specification)一书的第3章说“基本类型的映射很简单”,我对这句话有点困惑。 正如我们所知,c数据类型的大小是不确定的,它取决于程序运行的环境、复杂度和可用性。。。 例如int类型的大小可以是2字节或4字节。 但是java数据类型的大小是确定的,int的大小是4字节 那么,jni如何清晰地映射java和c/c++之间的数据类型呢 任何答案都将不胜感激

《Java本机接口程序员指南和规范》(the Java Native Interface Programmer's Guide and Specification)一书的第3章说“基本类型的映射很简单”,我对这句话有点困惑。 正如我们所知,c数据类型的大小是不确定的,它取决于程序运行的环境、复杂度和可用性。。。 例如int类型的大小可以是2字节或4字节。 但是java数据类型的大小是确定的,int的大小是4字节

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


任何答案都将不胜感激

在C语言中,有一个名为的模块,它定义了类型
int64\t
int32\t
,以及friends,这使得映射变得“简单”


但是您应该正确地注意到,在任何特定的C实现中,普通old
int
的大小都没有精确指定。作者对“直截了当”一词的理解确实相当松散,并假设您将该声明理解为“Java的
int
映射到32位的C带符号整数类型。”

标题定义了适当的基元类型:jint、jlong、jchar等等。它们被声明为与相应Java原语的大小相匹配。在JNI代码中使用它们。

现在,我有一个结论,在c/c++中,一个数据类型可能有几种大小。但它会选择一种与java数据类型大小相同的数据类型。换句话说,映射必须介于两者大小相同之间。我说得对吗?@ghui:没错。必须这样做,否则具有最大整数类型的一方可能会传递一个太大的值,而另一方无法容纳该值。