我一直看到使用和不使用非关联的env
接口指针,例如JNI接口指针混乱
env->DoSomething(arguments)
与
(*env)->DoSomething(env, arguments)
他们是否实际上是不同的东西?是否来自较早的JNI实现?
我一直看到使用和不使用非关联的env
接口指针,例如JNI接口指针混乱
env->DoSomething(arguments)
与
(*env)->DoSomething(env, arguments)
他们是否实际上是不同的东西?是否来自较早的JNI实现?
这是一个在C和C++,从wikipedia写JNI代码之间的区别:
需要注意的是C++ JNI代码比C JNI 代码,因为像Java语法稍微干净,C++使用对象方法调用的语义。这意味着在C中,使用(* env) - > 取消了env参数的引用,并且必须将env明确地传递给JNIEnv方法。在C++中,使用env->取消引用env 参数,并且将env参数 作为对象方法调用语义的一部分隐式传递。
它们是同一件事;只是一点点宏魔法。更好的(第一个)语法在C++上下文中启用。