我正在构建在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控制台?

最佳答案

您不能像使用函数那样重载宏,因为自C以来,预处理器并没有发生很大的变化。一种常见的方法是使用MY_DEBUG和MY_DEBUG2等。

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

08-18 18:04