2011-08-09 113 views
1

我一直看到使用和不使用非關聯的env接口指針,例如JNI接口指針混亂

env->DoSomething(arguments) 

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

他們是否實際上是不同的東西?是否來自較早的JNI實現?

回答

2

這是一個在C和C++,從wikipedia寫JNI代碼之間的區別:

需要注意的是C++ JNI代碼比C JNI 代碼,因爲像Java語法稍微乾淨,C++使用對象方法調用的語義。這意味着在C中,使用(* env) - > 取消了env參數的引用,並且必須將env明確地傳遞給JNIEnv方法。在C++中,使用env->取消引用env 參數,並且將env參數 作爲對象方法調用語義的一部分隱式傳遞。

3

它們是同一件事;只是一點點宏魔法。更好的(第一個)語法在C++上下文中啓用。