2009-11-10 157 views
1

Visual Studio 2008vfprintf导致运行时错误

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

不过,我想在Windows上编译使用VS 2008编译的C代码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); 
} 
+1

你如何运行时错误,如果你有一个编译时错误?你为了让它编译而改变了什么? – 2009-11-10 02:48:12

+0

我想知道和罗布沃克一样的东西。另外,写入的log_msg()等价于fprintf()。 fprintf()工作正常吗?假设它的确如此,您可以通过汇编级别的调试来了解其差异。 – 2009-11-10 03:06:36

+0

我对__func__有一个编译错误,所以我评论了它,然后运行没有%s和__func__的代码。然后我得到了vfprintf的错误。 – ant2009 2009-11-10 03:13:12

回答

2

__func__是C99结构,并在Visual Studio中不可用。您可以尝试使用__FUNCTION__

除此之外,你的例子适合我。

+0

您是否正在编译Visual Studio 2008 SP1? – ant2009 2009-11-10 03:51:16

+0

是的,VS2008 SP1 – user200783 2009-11-10 04:05:00

+0

是的,现在工作正常。谢谢。 – ant2009 2009-11-10 15:51:54

相关问题