gccからclangにレガシーコードを移行しています。コードには、voidポインター、const char *からchar *への変換、unsigned char *からchar *への変換、子クラスへの親クラスオブジェクトの割り当てなど、型変換の問題が多々あります。コードベースは非常に大きいので、すべてを型キャストするのは非常に面倒な作業になります。 これらのエラーをオフにするために使用するフラグがありますか?私は試してみました - または - エラー - (エラータイプ)。タイプ変換を無効にする
char* Page::pageTitle()
{
jvalue pageObject;
m_javaClass.CallMethod(
m_javaObject.Get(),
"getPageTitle",
"()Ljava/lang/String;",
'L',
(jvalue*)0,
&pageObject);
if (pageObject.l == NULL)
return NULL;
JNIEnv* env = JNIGetEnv();
jboolean isCopy = JNI_TRUE;
const char* pageString = env->GetStringUTFChars(pageObject.l, &isCopy);
return pageString;
}
error: cannot initialise a parameter of type 'jstring' (aka '_jstring *') with an lvalue of type 'jobject' (aka '_jobject *')
jvalue.lはjオブジェクトタイプとGetStringUTFCharsがjni.h中 にconst char* GetStringUTFChars(jstring string, jboolean* isCopy)
として宣言されており、私たちはある子クラスに基底クラスのオブジェクトを割り当てるしようとしているので
class _jstring : public _jobject {}
として_jstringが宣言されていますエラーとして扱われます。 コードベースのサイズを考慮すると、すべての出現を型キャストできません。
このような種類のエラーをクローラで無効にできるフラグはありますか。
[mcve]を作成します。 – user2079303
エラーが発生する理由がありますが、これを修正するのが最善の方法です。 –