C++ 如何重定向C/C++;发送到windows phone日志记录系统的printf()消息
我想编译一个C/C++宏,它允许我在许多不同的平台上记录调试消息。我的代码适用于Android、iPhone、Win32,我想添加对WindowsPhone的支持 如何操作(能够将ascii消息写入日志文件/控制台) 我是WindowsPhone平台的新手,因此如果没有几个不同的日志记录系统,请建议我使用哪个系统 我的代码附在下面:C++ 如何重定向C/C++;发送到windows phone日志记录系统的printf()消息,c++,c,windows-phone-7,logging,C++,C,Windows Phone 7,Logging,我想编译一个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_
#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
#if(WIN_PC_OS)
//在windows EXE中,DLL和Lib允许日志记录
#定义我的系统日志信息(…)fprintf(标准、变量、参数)
#定义MY_SYSTEM_LOG_WARN(…)fprintf(标准、变量、参数)
#定义我的系统日志错误fprintf
#埃利夫(安德鲁斯)
//将日志消息重定向到android日志。
#包括
#定义我的系统日志信息(…)\uuuuAndroid日志打印(android日志信息、日志标签、参数)
#定义我的系统日志警告(…)\uuuuAndroid日志打印(android日志警告、日志标签、参数)
#定义我的系统日志错误(…)\uuuuu安卓日志打印(安卓日志错误、日志标记、变量)
#elif(苹果操作系统)
//将日志消息重定向到iPhone日志。像NSLog(@u VA_ARGS_uu);
#定义我的系统日志信息(…)fprintf(标准、变量、参数)
#定义MY_SYSTEM_LOG_WARN(…)fprintf(标准、变量、参数)
#定义我的系统日志错误fprintf
#否则
//Windows phone仍受支持!!!!
#恩迪夫
Windows Phone运行时具有常见的stderr
和stdout
描述符,您可以使用类似于问题片段中显示的WIN_PC_OS
案例的描述符。事实上,你可以把这两种情况结合起来
<>但是您已经将C和C++都表示为问题的标记,所以注意如果您希望提供一个单独的宏C++,使用<代码> STD::CURR < /C> > <代码> STD::EntL,如in,
std::cerr << "INFO my info log message" << std::endl;
代码> STD::CERP,它是C还是C++?我不在乎哪种语言。我将用C++编译器编译它。Prtff-()是C函数,但是C++编译器接受它。@凯西,我尽全力去解压缩C和C++——尽管我发现它经常比讨厌的多——但是有时候它并不重要。C的某些方面总是将成为C++的一部分。@ DanielHsH,你真的瞄准Windows Phone 7吗?她认为这已经过时了。。。如果您的目标是windows phone 8,您可能希望使用名称空间中的工具进行日志记录,因为无法保证
stderr
将转到您想要的地方。