我有什麼感覺像一個簡單的問題,但我似乎無法弄清楚如何解決它。我有一個我正在移植到Android的大型應用程序。該代碼與許多日誌調用散落,看起來像下面這樣:重新定義記錄的宏
LOG_WARN(s_debugHandle, ("OpenGL error detected on entry. (Error:0x%x).",glError));
我要重新定義LOG_WARN是combatible與Android。我所做的是這樣的:
#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,但其他調用與其他變量類型給予同樣的轉換錯誤而是來自那種類型。我曾嘗試:
- 交換...和VA_ARGS只是 「味精」。同樣的問題。
- 刪除LOG_WARN第二個參數的圓括號。這實際上解決了這個問題,但在我的情況下這不是一個有效的解決方案,因爲這會破壞其他平臺的日誌記錄宏。
- 1和2 - 抱怨太多爭論。
請幫忙!
UPDATE:
預處理後,調用如下:
__android_log_print(ANDROID_LOG_WARN, "debug", ("OpenGL error detected on entry. (Error:0x%x).",glError));
你可以檢查預處理器的輸出,看看你是否需要這個? – 2012-03-16 14:38:06
完成並更新了問題。 – Jake 2012-03-16 14:48:40
可以刪除括號並更改其他平臺的宏嗎? – Kevin 2012-03-16 14:49:19