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コードを記述することの違いです。

C ++ JNIコードは、Javaと同様に、オブジェクトメソッド呼び出しセマンティクスを使用するため、構文的にはCJNIコードよりもわずかにクリーンであることに注意してください。つまり、Cでは、envパラメーターは(* env)->を使用して逆参照され、envはJNIEnvメソッドに明示的に渡される必要があります。C ++では、envパラメーターはenv->を使用して逆参照され、envパラメーターはオブジェクトメソッド呼び出しセマンティクスの一部として暗黙的に渡されます。

于 2011-08-09T17:12:15.567 に答える