我正在构建在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控制台?
答案 0 :(得分:1)
你不能以函数的方式重载宏,因为预处理器没有显着改变,如果有的话,因为C.一个常见的方法是使用MY_DEBUG和MY_DEBUG2等。
有variatic macros,但我在多平台代码中避免使用它们。