溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

error: conflicting types for 錯(cuò)誤原因及解決辦法

發(fā)布時(shí)間:2020-07-13 01:32:36 來源:網(wǎng)絡(luò) 閱讀:44734 作者:韓A 欄目:編程語言

error: conflicting types for '***'

 error: previous implicit declaration of '***' was here

 

       原因一:

      沒有函數(shù)聲明,且函數(shù)定義在主函數(shù)之后;

 

      原因二:

      頭文件的被循環(huán)引用,在引用時(shí)考慮清楚包含順序

 

      原因三:

      頭文件函數(shù)聲明和函數(shù)定義參數(shù)不同

  

      頭文件中聲明 void test(const char * buf);

      在定義時(shí)寫作 void test(char * buf);

      

      原因四:

      函數(shù)使用的參數(shù)類型是自定義類型(如結(jié)構(gòu)體),而自定義類型的定義在函數(shù)的聲明和函數(shù)定義之間,由于在函數(shù)聲明時(shí),結(jié)構(gòu)體并 


     沒有被定義,不被系統(tǒng)識別為結(jié)構(gòu)體,而后面定義函數(shù)時(shí),結(jié)構(gòu)體已經(jīng)定義,系統(tǒng)將其識別為結(jié)構(gòu)體,導(dǎo)致系統(tǒng)認(rèn)為聲明和定義使用  


    的是不同的參數(shù)類型;所以才會(huì)出現(xiàn)上述問題;

      

      原因五:

      在linux中,編譯頭文件,會(huì)出現(xiàn)一個(gè)中間的預(yù)編譯文件(.h.gch),當(dāng)再次編譯整個(gè)文件時(shí),如果該文件(.h.gch)存在,則會(huì)直接使用該文件(.h.gch),而不會(huì)再編譯.h文件,此時(shí),如果你改動(dòng)了.h文件,而繼續(xù)編譯,則會(huì)造成聲明和定義不一致的現(xiàn)象,雖然在文件里顯示聲明和定義是一致的,但是實(shí)際上系統(tǒng)編譯時(shí)并不會(huì)使用你改動(dòng)后的文件(.h),而是直接使用你修改前編譯生成的.h.gch文件;(這個(gè)

錯(cuò)誤一般很難發(fā)現(xiàn),如果發(fā)現(xiàn)自己目錄下有.h.gch文件,則一定要及時(shí)更新;)


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI