2012-02-14 17 views
6

に定義することはできませんが、私は宣言を持っています:C++ stat.h不完全な型と、私は自分のコードの上部にstat.h</p> <p>と非常に奇妙な問題を抱えてい

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; 
} 
私はこのコードをコンパイルしようとすると0

は、私はエラーを取得する:

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' 

このスレッドから:How can I get a file's size in C? 私はこのコードは動作するはずですし、それがコンパイルできない理由を私は理解できないと思います。誰かが私が間違っていることを見つけることができますか?

+1

OSとコンパイラ? – mikithskegg

+0

正しいパスセパレータを使用していますが、同じ問題が発生しています。 Windows上でMinGWでコンパイルしていますが、コンパイラにはstruct statと関数statが宣言されたsys/stat.hファイルがあります。これ以上のアイデアは? – Youda008

答えて

5

あなたの\さんは/さんですか、それともあなたの環境をちょっと混乱させましたか?

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だった。

+1

は不要です – mikithskegg

+0

ああ、問題はコードのインクルードセクションの/ではなく\です。その修正の後、問題は解決されました。 – user788171

関連する問題