Как перенаправить сообщения printf () C / C ++ в систему регистрации Windows Phone

Я хочу скомпилировать макрос C / C ++, который позволяет мне регистрировать сообщения отладки на разных платформах. Мой код подходит для Android, iPhone, Win32, и я хочу добавить поддержку WindowsPhone.

Как мне это сделать (быть в состоянии писать сообщения ascii в файл журнала / консоль)?

Я новичок в платформе WindowsPhone, поэтому если есть несколько различных систем регистрации, пожалуйста, посоветуйте мне, какую из них использовать.

Мой код прилагается ниже:

#if (WIN_PC_OS)
// In windows EXE's, DLL's and Lib's allow logging
#define MY_SYSTEM_LOG_INFO(...)   fprintf(stderr, __VA_ARGS__)
#define MY_SYSTEM_LOG_WARN(...)   fprintf(stderr, __VA_ARGS__)
#define MY_SYSTEM_LOG_ERR_(...)   fprintf(stderr, __VA_ARGS__)
#elif (ANDR_OS)
// Redirect log messages to android log.
#include <android/log.h>
#define MY_SYSTEM_LOG_INFO(...)   __android_log_print(ANDROID_LOG_INFO    ,LOG_TAG,__VA_ARGS__)
#define MY_SYSTEM_LOG_WARN(...)   __android_log_print(ANDROID_LOG_WARN    ,LOG_TAG,__VA_ARGS__)
#define MY_SYSTEM_LOG_ERR_(...)   __android_log_print(ANDROID_LOG_ERROR   ,LOG_TAG,__VA_ARGS__)
#elif (APPLE_OS)
// Redirect log messages to iPhone log. Like NSLog(@__VA_ARGS__);
#define MY_SYSTEM_LOG_INFO(...)   fprintf(stderr, __VA_ARGS__)
#define MY_SYSTEM_LOG_WARN(...)   fprintf(stderr, __VA_ARGS__)
#define MY_SYSTEM_LOG_ERR_(...)   fprintf(stderr, __VA_ARGS__)
#else
// Windows phone supported yet!!!!
#endif

2

Решение

Windows Phone Runtime имеет обычный stderr а также stdout дескрипторы, которые вы можете использовать аналогично WIN_PC_OS случай, который вы показали в фрагменте в вопросе. На самом деле вы можете просто объединить два случая.

Но вы указали и C, и C ++ в качестве тегов для вопроса, поэтому обратите внимание, что если вы хотите предоставить отдельный макрос для C ++ и использовать std::cerr с std::endl, как в,

std::cerr << "INFO my info log message" << std::endl;

очистит буфер вывода, а с помощью C подумайте, нужно ли вам fflush(stderr) после тебя fprintf(stderr),

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]