第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

C中的隱函數(shù)聲明

C中的隱函數(shù)聲明

C
慕桂英546537 2019-07-04 17:31:48
C中的隱函數(shù)聲明什么是“函數(shù)的隱式聲明”?調(diào)用標(biāo)準(zhǔn)庫函數(shù)而不包括適當(dāng)?shù)念^文件會(huì)產(chǎn)生警告,例如:int main(){   printf("How is this not an error?");   return 0;}不應(yīng)該在不聲明函數(shù)是錯(cuò)誤的情況下使用函數(shù)嗎?請?jiān)敿?xì)解釋。我搜索了這個(gè)網(wǎng)站,發(fā)現(xiàn)了類似的問題,但沒有找到明確的答案。大多數(shù)答案都提到了包含頭文件以消除警告,但我想知道這怎么不是一個(gè)錯(cuò)誤。
查看完整描述

3 回答

?
收到一只叮咚

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊

這應(yīng)該被認(rèn)為是一個(gè)錯(cuò)誤。但C是一種古老的語言,所以它只是一種警告。
-Werror(GCC)解決這個(gè)問題。

當(dāng)C找不到聲明時(shí),它假設(shè)這個(gè)隱式聲明:int f();,這意味著函數(shù)可以接收給它的任何信息,并返回一個(gè)整數(shù)。如果這剛好夠近的話(萬一.printf),那么事情就可以運(yùn)作了。在某些情況下(例如,函數(shù)實(shí)際上返回一個(gè)指針,并且指針比INT大),它可能會(huì)造成真正的麻煩。

請注意,這是修正在較新的C標(biāo)準(zhǔn)(C99,C11)。在這些標(biāo)準(zhǔn)中,這是一個(gè)錯(cuò)誤。然而,gcc默認(rèn)情況下不會(huì)實(shí)現(xiàn)這些標(biāo)準(zhǔn),因此仍然會(huì)收到警告。


查看完整回答
反對 回復(fù) 2019-07-04
?
holdtom

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超10個(gè)贊

隱式聲明在C中無效。

C99刪除了這個(gè)特性(出現(xiàn)在C89中)。

gcc默認(rèn)情況下只發(fā)出警告。-std=c99但是編譯器有權(quán)拒絕翻譯這樣的程序。


查看完整回答
反對 回復(fù) 2019-07-04
?
慕哥9229398

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊

C是一種非常低級的語言,因此它允許您創(chuàng)建幾乎任何合法的對象(.o)文件。你應(yīng)該把C看作是基本打扮的匯編語言。

特別是,C不要求在使用函數(shù)之前聲明函數(shù)。如果您調(diào)用一個(gè)函數(shù)而不聲明它,那么函數(shù)的使用就變成了它的(隱式)聲明。在我剛剛運(yùn)行的一個(gè)簡單測試中,這只是對printf這樣的內(nèi)置庫函數(shù)的警告(至少在GCC中是這樣),但是對于隨機(jī)函數(shù),它會(huì)編譯得很好。

當(dāng)然,當(dāng)您嘗試鏈接,而它找不到foo,那么您將得到一個(gè)錯(cuò)誤。

對于像printf這樣的庫函數(shù),一些編譯器包含它們的內(nèi)置聲明,這樣它們就可以進(jìn)行一些基本的類型檢查,所以當(dāng)隱式聲明(從使用中)與內(nèi)置聲明不匹配時(shí),您將得到一個(gè)警告。


查看完整回答
反對 回復(fù) 2019-07-04
  • 3 回答
  • 0 關(guān)注
  • 672 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號