0
我正在寫一個宏生成JNI方法名稱,使用預處理,使生活更輕鬆:錯誤:粘貼「Java_com_my_packagename_myClass_myMethod」和「(」不給出一個有效的預處理標記
#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)
但是,編譯救援人員到場WS當我試圖用我的宏以下錯誤:
錯誤:粘貼「Java_com_my_packagename_myClass_myMethod」和「(」不給出一個有效的預處理標記
有誰知道爲什麼宏失敗?
請了解'##'預處理器連接運算符。或者,如果您想要遠程理解任何內容,請完全避免預處理器。 – syam
我很驚訝它抱怨*''Java_com_my_packagename_myClass_myMethod「'和'」(「',因爲你的宏定義中沒有標記粘貼操作符。你確定這是產生該消息的確切代碼? –
爲什麼?爲什麼不按照設計者的意圖使用'javap'? – EJP