最終問題落腳在 : 乙個函式在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 單純的編譯上述源 並沒有任何報錯,只是在鏈結階段因為找不...