2012-02-14 23 views
6

Estoy teniendo un problema muy extraño con stat.hC++ stat.h tipo incompleto y no puede ser definido

En la parte superior de mi código, tienen declaraciones:

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

Y prototipo de la función:

int FileSize(string szFileName); 

Por último, la función en sí se define como sigue:

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

Cuando intento compilar este código, me sale el error:

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' 

A partir de este hilo: How can I get a file's size in C? creo que este código debe trabajar y no puedo entender por qué no se compila. ¿Alguien puede ver lo que estoy haciendo mal?

+1

¿Sistema operativo y compilador? – mikithskegg

+0

Estoy teniendo el mismo problema aunque utilizo el separador de ruta correcto. Estoy compilando con MinGW en Windows, y el compilador tiene un archivo sys/stat.h con stat struct y función stat declarada. ¿Alguna idea más? – Youda008

Respuesta

5

¿Se supone que su \ es / o estoy confundido acerca de su entorno? página

UNIX MAN:

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

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

Si estás en Windows (que supongo que podría ser debido a las \ 's), entonces no puedo ayudar porque no lo hice, incluso saber que tenía stat.

+1

es innecesario – mikithskegg

+0

Ah, el problema es \ en vez de/en la sección de inclusión del código. Después de esa corrección, el problema fue resuelto. – user788171

Cuestiones relacionadas