有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java var不是全局的,而是局部的

从下面的代码片段中,我尝试测试NewGlobalRef,并在if块的局部范围内声明clsStr后,尝试使其成为全局的

jstring Java_Package_LocalAndGlobalReference_returnGlobalReference
 (JNIEnv *env, jobject obj) {
if(1) {
    printf("In function make global reference\n");
    jclass clsStr ;
    jclass cls = (*env)->FindClass(env,"java/lang/String");
    if( cls == NULL)
        return NULL;
    // create a global reference of clsStr
    clsStr = (*env)->NewGlobalRef(env,cls);
    // Delete the local reference, which is no longer userful
    (*env)->DeleteLocalRef(env,cls);
    if(clsStr == NULL)
        return NULL;
}
 return clsStr; // statement 31
}

当我运行上述代码段时,会出现以下错误:

W:\elita\jnitesters\workspace\c\LGR\LGR.c:31: error: 'clsStr' undeclared (first use in this function)
W:\elita\jnitesters\workspace\c\LGR\LGR.c:31: error: (Each undeclared identifier is reported only once
W:\elita\jnitesters\workspace\c\LGR\LGR.c:31: error: for each function it appears in.)

当我使用sament clsStr = (*env)->NewGlobalRef(env,cls)使变量成为全局变量时,为什么会出现错误,说clsStr未定义


共 (0) 个答案