【发布时间】:2014-01-25 08:08:00
【问题描述】:
我想编译一个 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
【问题讨论】:
-
它是C还是C++?
-
我不在乎哪种语言。我将使用 C++ 编译器对其进行编译。 printf() 是 C 函数,但 C++ 编译器接受它。
-
@Casey,我竭尽全力将 C 和 C++ 解耦——尽管我经常觉得这很烦人——但有时这并不重要。 C 的某些方面总是会成为 C++ 的一部分。
-
@DanielHsH 你真的是针对 windows phone 7 吗? MS 认为这已经过时了...如果您的目标是 windows phone 8,您可能希望使用
Windows::Foundation::Diagnostics命名空间中的工具进行日志记录,因为不能保证stderr会去您想要的地方。
标签: c++ c windows-phone-7 logging