我很好奇为什么jni程序设计指南说
JNI为C++程序员提供了一个稍微干净一些的界面。
jni.h文件包含一组内联C++函数,以便本机方法程序员只需编写: jclass cls = env->FindClass("java/lang/String"); 而不是: jclass cls = (*env)->FindClass(env,"java/lang/String");env上的额外间接级别和FindClass的env参数对程序员来说是隐藏的。C++编译器简单地将C++成员函数调用扩展到它们的C对应方;因此,生成的代码完全相同。
C和c++指针有什么区别?
发布于 2014-12-08 08:05:08
C++指针是指向类object的指针。C指针是指向function的指针。它们是两种不同的东西。
因为C++ object已经知道环境,所以不需要再次传递环境。
C指针是指向结构的指针,在该结构中调用函数。函数没有状态,所以您需要传递状态(在本例中,相同的env结构,因此它可以在这个结构中找到变量。)
在jni.h中的JDK中,您可以看到C++函数是:
jclass FindClass(const char *name) {
return functions->FindClass(this, name);
}functions是指向env的对象内部的指针。因此,C++版本在内部扩展到C版本。
https://stackoverflow.com/questions/27353012
复制相似问题