У меня есть то, что кажется простой проблемой, но я просто не могу понять, как ее решить.У меня есть большое приложение, которое я портирую на Android.Код полон множества вызовов журнала, которые выглядят следующим образом:
LOG_WARN(s_debugHandle, ("OpenGL error detected on entry. (Error:0x%x).",glError));
Я хочу переопределить LOG_WARN для совместимости с 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 только для "msg".Та же проблема.
- Удаление скобок вокруг второго аргумента LOG_WARN.Это на самом деле решает проблему, но в моем случае это недопустимое решение, так как это нарушит макросы журналов других платформ.
- И 1, и 2 - жалуется на слишком много аргументов.
Пожалуйста, помогите!
ОБНОВЛЕНИЕ:
После предварительной обработки вызов выглядит следующим образом:
__android_log_print(ANDROID_LOG_WARN, "debug", ("OpenGL error detected on entry. (Error:0x%x).",glError));