C ++ stat.h неполного типа и не может быть определен - PullRequest
6 голосов
/ 15 февраля 2012

У меня очень странная проблема с stat.h

Вверху моего кода у меня есть объявления:

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

И прототип функции:

int FileSize(string szFileName);

Наконец, сама функция определяется следующим образом:

int FileSize(string szFileName)
{
  struct stat fileStat; 
  int err = stat( szFileName.c_str(), &fileStat ); 
  if (0 != err) return 0; 
  return fileStat.st_size;
}

Когда я пытаюсь скомпилировать этот код, я получаю сообщение об ошибке:

divide.cpp: In function 'int FileSize(std::string)':
divide.cpp:216: error: aggregate 'stat fileStat' has incomplete type and cannot be defined
divide.cpp:217: error: invalid use of incomplete type 'struct stat'
divide.cpp:216: error: forward declaration of 'struct stat'

Из этой темы: Как узнать размер файла в C? Я думаю, что этот код должен работать, и я не могу понять, почему он не компилируется. Кто-нибудь может определить, что я делаю неправильно?

1 Ответ

5 голосов
/ 15 февраля 2012

Ваши \ должны быть / или я просто запутался в вашей среде?

Страница UNIX MAN:

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

 int stat(const char *restrict path, struct stat *restrict buf);

Если вы работаете в Windows (я полагаю, это может быть из-за \), то я не могу помочь, потому что я даже не знал, что у него было stat.

...