Путаница с указателем на интерфейс JNI - PullRequest
1 голос
/ 09 августа 2011

Я постоянно вижу указатель интерфейса env, используемый с разыменованием и без него, например

env->DoSomething(arguments)

против

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

Они на самом деле разные вещи? Один из более старой реализации JNI?

Ответы [ 2 ]

3 голосов
/ 09 августа 2011

Это одно и то же; просто немного магии макросов. Лучший (первый) синтаксис включен в контексте C ++.

2 голосов
/ 09 августа 2011

Это разница между написанием jni-кода на C и C ++ из wikipedia :

Обратите внимание, что код C ++ JNI синтаксически немного чище, чем код C JNI, поскольку, как и Java,C ++ использует семантику вызова метода объекта.Это означает, что в C параметр env разыменовывается с помощью (* env) -> и env должен быть явно передан в методы JNIEnv.В C ++ параметр env разыменовывается с помощью env->, а параметр env неявно передается как часть семантики вызова метода объекта.

...