私は単純な問題のような気がしますが、解決方法を理解できないようです。私はAndroidに移植している大きなアプリケーションを持っています。ロギングのためのマクロの再定義
LOG_WARN(s_debugHandle, ("OpenGL error detected on entry. (Error:0x%x).",glError));
私は、AndroidとcombatibleするLOG_WARNを再定義したい:コードは、次のような多くのログコールが散らばっています。私がやったことは次のようになります。
#define LOG_WARN(handle, ...) __android_log_print(ANDROID_LOG_WARN, LOG_TAG, __VA_ARGS__)
私はこれをコンパイルすると、コンパイラは、この私に語った:
error: invalid conversion from 'int' to 'const char*'
error: initializing argument 3 of 'int __android_log_print(int, const char*, const char*, ...)'
glErrorがintであるが、他の変数の型と他の呼び出しが同じ変換エラーを与えます代わりにそのタイプから。私は試してみました:
- は...交換し、ちょうど "MSG" のVA_ARGS。同じ問題。
- LOG_WARNの2番目の引数のかっこを削除します。これは実際にそれを解決しますが、それは他のプラットフォームのロギングマクロを壊すので私のケースでは有効な解決策ではありません。
- 1と2の両方とも、引数が多すぎると文句を言う。
助けてください!
UPDATE:
前処理した後、呼び出しは次のようになります。
__android_log_print(ANDROID_LOG_WARN, "debug", ("OpenGL error detected on entry. (Error:0x%x).",glError));
プリプロセッサの出力を調べて、それが必要かどうか確認できますか? –
完了し、質問を更新しました。 – Jake
括弧を削除して他のプラットフォームのマクロを変更できますか? – Kevin