vfprintf вызывает ошибку во время выполнения - PullRequest
1 голос
/ 10 ноября 2009

Visual Studio 2008

Я использую следующий исходный код, который хорошо компилируется с использованием linux gcc 4.4.1.

Тем не менее, я пытаюсь скомпилировать на Windows XP SP3 с использованием компиляции VS 2008 как код c.

Я получаю ошибку во время выполнения при вызове 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 ]

2 голосов
/ 10 ноября 2009

__func__ является конструкцией C99 и недоступна в Visual Studio. Вместо этого вы можете попробовать __FUNCTION__.

Кроме этого, ваш пример отлично работает для меня.

1 голос
/ 10 ноября 2009

Также __func__ не определен в заголовочном файле, это предопределенная константа. См. Можно ли заменить func на имя идентификатора в макросе C? для получения дополнительной информации.

...