【发布时间】:2014-07-20 20:24:15
【问题描述】:
我想知道如何解决这个错误:
错误:聚合 'Padron_Electoral::getFileSize(const char*)::stat stat_buf' 类型不完整,无法定义
有问题的方法是:
long long const Padron_Electoral::getFileSize(const char* filename) {
struct stat stat_buf; // This line doesnt compile en the computer Im currently working on, If tried on another computer this method compiles and work.
int rc = stat(filename, &stat_buf);
return rc == 0 ? stat_buf.st_size : -1;
}
如果我评论这个方法,其余的代码都会编译,我使用的是 GNU GCC 编译器。两台计算机都有相同的编译器,并且我在代码块中工作。如果我尝试在控制台上编译它,它会抛出同样的错误。有没有人有同样的错误?可能是什么原因以及如何解决?
两台计算机中的代码相同,#include #include 和 .h 文件的包含
它抛出的其他错误:
错误:无效使用不完整类型'struct Padron_Electoral::getFileSize(const char*)::stat'
错误:'struct Padron_Electoral::getFileSize(const char*)::stat'的前向声明
#include 可以包含在编译代码的计算机上,但在另一台计算机上包含抛出错误:
构建:在 Prueba 中调试(编译器:GNU GCC 编译器) c:\mingw\include\io.h|301|错误:'off64_t' 没有命名类型 c:\mingw\include\io.h|302|错误:'off64_t' 没有命名类型 c:\mingw\include\unistd.h|65|错误:'off_t' 尚未声明| C:\Users\Gabriel\Documents\Progra II\Prueba\main.cpp||在函数'int main()'中: C:\Users\Gabriel\Documents\Progra II\Prueba\main.cpp|7|error: aggregate 'main()::stat stat_buf' 类型不完整,无法定义| C:\Users\Gabriel\Documents\Progra II\Prueba\main.cpp|8|错误:无效使用不完整类型'struct main()::stat'| C:\Users\Gabriel\Documents\Progra II\Prueba\main.cpp|7|错误:'struct main()::stat' 的前向声明 构建失败:6 个错误,0 个警告(0 分钟,0 秒)
代码编译失败的电脑操作系统为:Windows 7 Ultimate。
代码编译失败的电脑处理器:Intel Core i5 4440 CPU 3.10GHz
MinGW。 GCC 4.8.1(两台电脑)
IDE:Codeblocks 13.12(两台机器都使用这个IDE)
两者都是 64 位操作系统
编译和工作的计算机操作系统:Windows 7 Home Premium。
编译和工作的计算机处理器:Intel Pentium CPU P6100 2.0GHz
谢谢
编辑:代码现在编译,MinGW32 问题
long long const Padron_Electoral::getFileSize(const char* filename) {
#if __MINGW32__
struct __stat64 stat_buf;
int rc = __stat64(filename, &stat_buf);
return rc == 0 ? stat_buf.st_size : -1;
#else
struct stat stat_buf;
int rc = stat(filename, &stat_buf);
return rc == 0 ? stat_buf.st_size : -1;
#endif
return 0;
}
问题仍然存在,为什么 MinGW 在一台计算机上使用此方法而不是在另一台计算机上引发错误。
【问题讨论】:
-
你有
#include <sys/stat.h>吗? -
是的,两台电脑的代码是一样的。我还对 .h 文件进行了包含
-
试试 sys/types.h 和/或 unistd.h
-
是否还有其他错误,或者仅此一个?
-
需要较旧的 posixes
#include <sys/types.h>。
标签: c++ struct compiler-errors mingw