大家。我在Android下使用JNI编写。 我需要将一个“间隔”作为 uint16 传递到我的 C foo() 中,但之后我使用相同的“间隔”返回到 Java。
C:
static jint func (JNIEnv* env, jobject object,jstring first)
{
/*...action...*/
uint16 interval;
jint result = foo (ifirst, &interval);
return result < 0 ? result : interval;
}
下面有错误
error: operands to ?: have different types 'jint {aka int}' and 'uint16* {aka short unsigned int*}'
如何使用“间隔”参数来避免错误并继续程序的正确工作?
最佳答案
根据代码,您需要添加强制转换以确保 ?:
运算符的两个条件类型相同。
static jint func (JNIEnv* env, jobject object,jstring first)
{
/*...action...*/
uint16 interval;
jint result = foo (ifirst, &interval);
return result < 0 ? result : (jint)interval;
}
关于将 uint16 转换为 jint 并返回 JNI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22069835/