Android - кроссплатформенный дружественный макрос отладки / логгера - PullRequest
1 голос
/ 21 октября 2011

Я создаю код C ++, который используется на Android и iOS. Мне нужна некоторая форма макроса отладчика, чтобы легко вставить отладку в код. Например, я думал о чем-то вроде этого:

#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 Ответ

1 голос
/ 21 октября 2011

Вы не можете перегружать макросы так, как вы можете с помощью функций, потому что препроцессор существенно не изменился, если вообще изменился, начиная с C. Обычный подход заключается в использовании MY_DEBUG и MY_DEBUG2 и т. Д.

Есть переменные макросы но я избегаю их в многоплатформенном коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...