如何使用可变参数为 WinCE 编写一个小型记录器
How to write a small logger using varargs for WinCE
我正在尝试对某些没有日志记录的外部硬件进行一些调查。
为此,我正在使用 C 中的可变参数制作我自己的小型记录器。这是我的代码:
void write(const char* msg, ...)
{
va_list args;
va_start(args, msg);
FILE* file = fopen("/network/cewin/loggerfile.txt", "a");
if(file != NULL)
{
vfprintf(file, msg, args);
fputc('\n', file);
fclose(file);
va_end(args);
}
}
首先,我在 Windows 7 上测试了这段代码,没有问题,但在 WinCE 上,包含参数的行没有被打印出来。
这是一个例子:
write("Hello World") - Works on Win 7 and WinCE
write("Hello %s", "World") - Works on Win7, not on WinCE
write("Hello %i", 5) - Works on Win7, not on WinCE
我想了解为什么最后两行在 Win7 上有效,但在 WinCE 上无效。也许我需要使用 vfprintf
以外的东西?
由于硬件原因,我无法检查方法中的 return 值。
不是答案 -> 我无法将代码放在评论中 - 'static' 调试功能,不使用 varargs 或 vnprintf
void debugI(char *str, int iValue)
{
FILE *debugPtr = fopen ("/debugpath/debugFile.txt", "a");
fprintf (debugPtr, "debugI %s:%d\n", str, iValue);
fclose (debugPtr);
}
我正在尝试对某些没有日志记录的外部硬件进行一些调查。
为此,我正在使用 C 中的可变参数制作我自己的小型记录器。这是我的代码:
void write(const char* msg, ...)
{
va_list args;
va_start(args, msg);
FILE* file = fopen("/network/cewin/loggerfile.txt", "a");
if(file != NULL)
{
vfprintf(file, msg, args);
fputc('\n', file);
fclose(file);
va_end(args);
}
}
首先,我在 Windows 7 上测试了这段代码,没有问题,但在 WinCE 上,包含参数的行没有被打印出来。
这是一个例子:
write("Hello World") - Works on Win 7 and WinCE
write("Hello %s", "World") - Works on Win7, not on WinCE
write("Hello %i", 5) - Works on Win7, not on WinCE
我想了解为什么最后两行在 Win7 上有效,但在 WinCE 上无效。也许我需要使用 vfprintf
以外的东西?
由于硬件原因,我无法检查方法中的 return 值。
不是答案 -> 我无法将代码放在评论中 - 'static' 调试功能,不使用 varargs 或 vnprintf
void debugI(char *str, int iValue)
{
FILE *debugPtr = fopen ("/debugpath/debugFile.txt", "a");
fprintf (debugPtr, "debugI %s:%d\n", str, iValue);
fclose (debugPtr);
}