1

例如,我一直看到env使用和不使用取消引用的接口指针

env->DoSomething(arguments)

对比

(*env)->DoSomething(env, arguments)

它们实际上是不同的东西吗?是否来自较旧的 JNI 实现?

4

2 回答 2

3

它们是同一回事;只是一点宏魔法。在 C++ 上下文中启用了更好的(第一个)语法。

于 2011-08-09T17:08:42.227 回答
2

这是用 C 和 C++ 编写 jni 代码的区别,来自wikipedia

请注意,C++ JNI 代码在语法上比 C JNI 代码略干净,因为与 Java 一样,C++ 使用对象方法调用语义。这意味着在 C 中,使用 (*env)-> 取消引用 env 参数,并且必须将 env 显式传递给 JNIEnv 方法。在 C++ 中,使用 env-> 取消引用 env 参数,并将 env 参数作为对象方法调用语义的一部分隐式传递。

于 2011-08-09T17:12:15.567 回答