C語言的「隱式函式宣告」違背了 「前置宣告」 原則

2021-08-09 03:35:35 字數 550 閱讀 2728

最終問題落腳在 : 乙個函式在main中呼叫了,必須在main之前定義或者宣告嗎?

我在自己的centos上做了實驗,結果是函式不需要,但是結構體(變數也要)需要,如下圖:

編譯上面的程式,func函式只是乙個警告,因此我以為c編譯器不管前置宣告,然後又測試了c++的編譯器,發現不能通過編譯,直接報錯。

最後有關c這個問題的答案是:c語言的「隱式函式宣告」惹的禍 :

知乎:隱式函式宣告:

[完]

C語言函式隱式宣告(1)

這段時間,在看中心後台服務軟體原始碼時發現,有很多自定義函式未經 宣告卻能在主程式中被呼叫,主程式中沒有包括上述函式的標頭檔案,我在各個目錄中也找不到上述函式的標頭檔案。這就奇怪了,連使用標準庫函式printf 都要包括標準輸入輸出標頭檔案,何況是自定義函式?這個問題困擾了我很久。前天問中創公司奚鍾...

C語言函式隱式宣告(2)

1 什麼是c語言的隱式函式宣告 在c語言中,函式在呼叫前不一定非要宣告。如果沒有宣告,那麼編譯器會自動按照一種隱式宣告的規則,為呼叫函式的c 產生彙編 下面是乙個例子 int main int argc,char argv 單純的編譯上述源 並沒有任何報錯,只是在鏈結階段因為找不到名為any nam...

C語言中的隱式函式宣告

1 什麼是c語言的隱式函式宣告 在c語言中,函式在呼叫前不一定非要宣告。如果沒有宣告,那麼編譯器會自動按照一種隱式宣告的規則,為呼叫函式的c 產生彙編 下面是乙個例子 1 2 3 4 5 int main int argc,char argv 單純的編譯上述源 並沒有任何報錯,只是在鏈結階段因為找不...