vfprintf导致运行时错误

时间:2009-11-10 02:40:18

标签: c windows visual-studio-2008

Visual Studio 2008

我正在使用以下使用linux gcc 4.4.1编译好的源代码。

但是,我正在尝试使用VS 2008编译作为c代码在windows xp sp3上编译。

我在调用vfprintf时遇到运行时错误。而且__func__给了我一个编译错误。 “未声明的标识符”。我认为__func__是在stdarg.h文件中定义的。

非常感谢任何建议,

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdarg.h>

void log_msg(FILE *out, const char *fmt, ...);

int main(void)
{
    printf("== Start program ===\n");

    log_msg(stderr, "[ %s ] : [ %s ] : [ %d ]\n", __FILE__, __func__, __LINE__);

    return 0;
}

void log_msg(FILE *out, const char *fmt, ...)
{
    va_list ap;
    va_start(ap, fmt);
    vfprintf(out, fmt, ap); /* run-time error here */
    va_end(ap);
}

2 个答案:

答案 0 :(得分:2)

__func__是C99构造,在Visual Studio中不可用。您可以尝试使用__FUNCTION__代替。
除此之外,您的示例适用于我。

答案 1 :(得分:1)

此外,__func__未在头文件中定义,它是预定义的常量。有关详情,请参阅Can I substitute func into an identifier name in a C macro?