【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!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM