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);
}
答案 0 :(得分:2)
__func__
是C99构造,在Visual Studio中不可用。您可以尝试使用__FUNCTION__
代替。
除此之外,您的示例适用于我。
答案 1 :(得分:1)
此外,__func__
未在头文件中定义,它是预定义的常量。有关详情,请参阅Can I substitute func into an identifier name in a C macro?。