Android - 跨平台友好的调试/记录器宏

时间:2011-10-21 09:02:43

标签: android c++ ios debugging macros

我正在构建在android和iOS上使用的C ++代码。我需要某种形式的调试器宏来轻松地将调试插入到代码中。 例如,我在考虑这样的事情:

#ifdef ANDROID 
#   define MY_DEBUG(debugmsg) __android_log_print(ANDROID_LOG_INFO, ANDROID_DEBUG_TAG,debugmsg)
#   define MY_DEBUG(debugmsg, mystr)    __android_log_print(ANDROID_LOG_INFO, ANDROID_DEBUG_TAG,debugmsg,mystr)
#elif defined (iOS)
#   define MY_DEBUG(debugmsg) printf(debugmsg)
#   define MY_DEBUG(debugmsg, mystr)    printf(debugmsg, mystr)
#endif 

所以例如我可以使用MY_DEBUG(“hello%s”,“world”)和MY_DEBUG(“hello”)

然而,它抱怨宏重新定义(并且理所当然)。如何进行宏..'重载',或者输入多个参数?

此外 - printf()是否将数据发送到iOS控制台?

1 个答案:

答案 0 :(得分:1)

你不能以函数的方式重载宏,因为预处理器没有显着改变,如果有的话,因为C.一个常见的方法是使用MY_DEBUG和MY_DEBUG2等。

variatic macros,但我在多平台代码中避免使用它们。