您好,登錄后才能下訂單哦!
error: conflicting types for '***'
error: previous implicit declaration of '***' was here
原因一:
沒有函數聲明,且函數定義在主函數之后;
原因二:
頭文件的被循環引用,在引用時考慮清楚包含順序
原因三:
頭文件函數聲明和函數定義參數不同
頭文件中聲明 void test(const char * buf);
在定義時寫作 void test(char * buf);
原因四:
函數使用的參數類型是自定義類型(如結構體),而自定義類型的定義在函數的聲明和函數定義之間,由于在函數聲明時,結構體并
沒有被定義,不被系統識別為結構體,而后面定義函數時,結構體已經定義,系統將其識別為結構體,導致系統認為聲明和定義使用
的是不同的參數類型;所以才會出現上述問題;
原因五:
在linux中,編譯頭文件,會出現一個中間的預編譯文件(.h.gch),當再次編譯整個文件時,如果該文件(.h.gch)存在,則會直接使用該文件(.h.gch),而不會再編譯.h文件,此時,如果你改動了.h文件,而繼續編譯,則會造成聲明和定義不一致的現象,雖然在文件里顯示聲明和定義是一致的,但是實際上系統編譯時并不會使用你改動后的文件(.h),而是直接使用你修改前編譯生成的.h.gch文件;(這個
錯誤一般很難發現,如果發現自己目錄下有.h.gch文件,則一定要及時更新;)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。