我正在编写一个宏,通过使用预处理器生成 JNI 方法名称来使生活更轻松:
#define JNI_WRAPPER_METHOD (className, methodName, returnValue, PARAMS) \
JNIEXPORT returnValue JNICALL Java_com_my_packagename_className_methodName\
(JNIEnv *env, jobject obj, BOOST_PP_SEQ_ENUM(PARAMS))
所以,理想情况下是这样的:
JNI_WRAPPER_METHOD(myClass, myMethod, jint, (jint myInt)(jstring myString))
将转化为:
JNIEXPORT jint JNICALL Java_com_my_packagename_myClass_myMethod(JNIEnv *env, jobject obj, jint myInt, jstring myString)
但是,当我尝试使用我的宏时,编译器会抛出以下错误:
错误:粘贴“Java_com_my_packagename_myClass_myMethod”和“(”未提供有效的预处理令牌
有谁知道为什么宏失败?