Параметр функции GetStringUTFChars

Я разрабатываю приложение для Android с помощью jni.
И я использовал функцию GetStringUTFChars следующим образом

jboolean iscopy;
const char* trainfile = (env)->GetStringUTFChars(jstr, &iscopy);

Но я видел еще один пример, подобный этому

const char *inCStr = (*env)->GetStringUTFChars(env, inJNIStr, NULL);

Оба работают хорошо. Но я не могу найти никакой документации о бывшем грамматике, даже более кратким.

Где я могу найти документацию и есть ли разница между ними?

Ответ 1

Первый пример - синтаксис С++ и будет работать только в программах на С++. Второй - для программ на C.

Причина, по которой эти две разные, заключается в том, что в С++ JNIEnv является классом, а функции являются функциями-членами объекта env, а в C JNIEnv - указателем на структуру. Поскольку то, что вы получаете в качестве параметра, является указателем на JNIEnv, в C вы должны разыгрывать его для доступа к членам структуры, поэтому вместо env вы должны использовать *env.

Это должно быть описано в любом тексте о том, как использовать JNI, но вы также можете найти его, прочитав код в файле заголовка.