我有什么感觉像一个简单的问题,但我似乎无法弄清楚如何解决它。我有一个我正在移植到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