использует неопределенную ошибку компиляции структуры - C - PullRequest
1 голос
/ 27 апреля 2009

Компилятор не знает, где находится stat.h?

Ошибка: c: \ Projects \ ADC_HCI \ mongoose.c (745): ошибка C2079: в st используется неопределенная структура _stat64

#include <sys/types.h>
#include <sys/stat.h>

static int
mg_stat(const char *path, struct mgstat *stp)
{
    struct  _stat64 st; //<-- ERROR

    int     ok;
    wchar_t     wbuf[FILENAME_MAX];

    to_unicode(path, wbuf, ARRAY_SIZE(wbuf));
    if (_wstat64(wbuf, &st) == 0) {
        ok = 0;
        stp->size = st.st_size;
        stp->mtime = st.st_mtime;
        stp->is_directory = S_ISDIR(st.st_mode);
    } else {
        ok = -1;
    }

    return (ok);
}  

... скачал файлы прямо из источника .

Ответы [ 4 ]

3 голосов
/ 24 мая 2009

См. MSDN : _wstat64 принимает параметр struct __stat64двумя подчеркиваниями). Переименуйте вашу переменную st в тип struct __stat64.

2 голосов
/ 24 мая 2009

Обратите внимание, что ни _stat64, ни __stat64 не является "стандартом" в смысле, документированном каким-либо стандартом, таким как POSIX. Вы обычно используете struct stat; если вы беспокоитесь о том, будет ли это работать с большими файлами (более 2 ГБ), то проверьте, какие параметры компиляции требуются на вашей платформе для получения «поддержки больших файлов». Для 64-битных машин и 64-битных компиляций (не обязательно Windows 64) вам обычно не нужно беспокоиться. Вы часто можете получить поддержку больших файлов, используя:

-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE

Они, по крайней мере, полу-стандартизированы. Такие системы, как autoconf, обнаруживают эти вещи автоматически (если вы попросите их сделать это).

1 голос
/ 06 июля 2009

Я предлагаю вам синхронизироваться с соединительной линией SVN.

Если у вас нет клиента SVN, просто скачайте два файла: http://mongoose.googlecode.com/svn/trunk/mongoose.h (и файл .c тоже)

Причина в том, что недавно код был реорганизован, и была заменена функция CRT _stat. с WinAPI, GetFileAttributesExW ().

1 голос
/ 05 мая 2009

Измените _stat64 на stat64. По крайней мере, на моих машинах с Linux это название структуры. Я не знаю, отличается ли это в Windows.

...