【gcc/complier】gcc编译出现field 'xxx' has incomplete type的问题

Date:2018.9.29


1、参考

https://blog.csdn.net/junjun5156/article/details/75039881?locationNum=8&fps=1
https://blog.csdn.net/mading0613/article/details/78587673
https://baike.baidu.com/item/timeval

2、问题描述

    gcc编译出现field ‘xxx’ has incomplete type的问题:
使用的struct timeval field “tStart” and “tEnd” 具有不完整的类型。
关于Linux下时间计算结构体timeval的用法可参考:
https://blog.csdn.net/soaringlee_fighting/article/details/70919381

3、原因分析

  在编译程序时, 类或结构体有前向声明的用法,编译到这里时还没有发现定义,不知道该类或者结构的内部成员,没有办法具体的构造一个对象,所以会报错。

4、解决方法

方法一:将类成员改成指针就好了;
方法二:将结构体定义放同一个地方。将结构体的定义包含在头文件中,加入使用该结构体的代码之前就可以了。对于该例,在使用struct timeval之前加入以下头文件即可。

#include "sys/time.h"

THE END!

原文地址:https://www.cnblogs.com/SoaringLee/p/10532353.html