2012-02-14 29 views
6

tanımlanamaz, ben bildirimleri var:C++ stat.h eksik tipi ve benim kod üst kısmında stat.h</p> <p>ile çok garip bir sorun yaşıyorum

int FileSize(string szFileName); 

Son olarak, kendisi gibi tanımlanmıştır fonksiyonu aşağıdaki gibidir:

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

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' 

: Bu kodu derlemeye çalıştığınızda 0

, ben hata alıyorum How can I get a file's size in C? bu kod çalışması gerekir ve derleme değil neden çözemiyorum düşünüyorum. Neyi yanlış yaptığımı bilen var mı?

+1

İşletim sistemi ve derleyici? – mikithskegg

+0

Doğru yol ayırıcı kullanmamıza rağmen aynı sorunu yaşıyorum. Windows'da MinGW ile derliyorum ve derleyici, struct stat ve işlev statüsü bildirilen sys/stat.h dosyasına sahip. Başka fikir var mı? – Youda008

cevap

5

Sizin \'ünüzün / olması gerekiyor mu, yoksa ben sadece çevrenizle ilgili miyim?

UNIX MAN sayfa: Eğer (Ben çünkü \ 's olabilir tahmin ediyorum) Windows üzerinde iseniz ben bile vermedi çünkü

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

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

, o zaman ben yardımcı olamam bunun stat olduğunu biliyordu.

+1

gereksiz – mikithskegg

+0

Ah, sorun kodun içerme bölümünde/yerine. Bu düzeltmeden sonra sorun çözüldü. – user788171