2011-10-21 37 views
1

我正在構建Android和iOS上使用的C++代碼。我需要某種形式的調試宏來輕鬆地將調試插入到代碼中。 例如,我在想是這樣的:Android - 跨平臺的友好調試/記錄器宏

#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( 「%s您好」, 「世界」)和MY_DEBUG( 「你好」)

然而,抱怨宏重新定義(並且正確如此)。我如何製作一個宏...'過載',或者如果輸入了多個參數?

另外 - 是否printf()發送數據到iOS控制檯?

回答

1

你不能重載宏的方式,您可以用功能,因爲預處理器並沒有顯著變化,如果有的話,因爲C.一種常見的方法是使用MY_DEBUG和MY_DEBUG2等

有但我在多平臺代碼中避免它們。

+0

我明白了。是否有一個原因,你爲什麼避免在多平臺代碼?任何具體的Android/iOS? – KaiserJohaan

+0

@KaiserJohaan我有不幸的樂趣,不得不使用一些較老的工具,所以我儘量避免使用C99中的「新」功能。 Variadic宏在Android和iOS上應該沒問題,但我從未嘗試過。 – IronMensan