【发布时间】:2012-03-03 10:14:46
【问题描述】:
我正在使用宏在不同平台上进行简单的日志记录。以下是我在 android 上使用的一些内容:
#include <android/log.h>
#define __ENGINE_LOG_INFO(msg, argptr) __android_log_vprint(ANDROID_LOG_INFO, __ENGINE_LOG_TAG, msg, argptr);
这是我在 Windows 上尝试过的对应:
#elif defined _WIN32 || _WIN64
#include <stdarg.h>
#include <stdio.h>
#define __ENGINE_LOG_INFO(msg, argptr) printf ("%s:%s",__ENGINE_LOG_TAG,"DEBUG:"); printf(msg, argptr); printf("\n");
宏在这个函数中被调用:
void LogManagerImpl::LogInfo(const char* msg, ...)
{
va_list argptr;
va_start(argptr, msg);
__ENGINE_LOG_INFO(msg, argptr);
va_end(argptr);
}
例如,我是这样使用的:
engine->GetLogger()->LogInfo("TEST: MemoryManagerTest:AllocateWithMemPool: Loop time: %d msec", timeStop - timeStart);
这在 Android 上运行良好,但由于某种原因,它似乎在 Windows 中打印虚假值(每次都是完全相同的值 - 一个非常大的值)。我开始认为它看起来像一个地址,但我不确定为什么它不起作用。有什么想法吗?
【问题讨论】:
标签: android c++ windows logging printf