如何使用可变参数为 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);
}