首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JNIEnv使用带括号还是不带括号?

JNIEnv使用带括号还是不带括号?
EN

Stack Overflow用户
提问于 2014-12-08 07:07:48
回答 1查看 68关注 0票数 1

我很好奇为什么jni程序设计指南

JNI为C++程序员提供了一个稍微干净一些的界面。jni.h文件包含一组内联C++函数,以便本机方法程序员只需编写: jclass cls = env->FindClass("java/lang/String"); 而不是: jclass cls = (*env)->FindClass(env,"java/lang/String"); env上的额外间接级别和FindClassenv参数对程序员来说是隐藏的。C++编译器简单地将C++成员函数调用扩展到它们的C对应方;因此,生成的代码完全相同。

C和c++指针有什么区别?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-08 08:05:08

C++指针是指向类object的指针。C指针是指向function的指针。它们是两种不同的东西。

因为C++ object已经知道环境,所以不需要再次传递环境。

C指针是指向结构的指针,在该结构中调用函数。函数没有状态,所以您需要传递状态(在本例中,相同的env结构,因此它可以在这个结构中找到变量。)

jni.h中的JDK中,您可以看到C++函数是:

代码语言:javascript
复制
jclass FindClass(const char *name) {
    return functions->FindClass(this, name);
}

functions是指向env的对象内部的指针。因此,C++版本在内部扩展到C版本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27353012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档