如果函數(shù)的定義是在調(diào)用之前,就不用聲明。如果先調(diào)用后定義,就要在調(diào)用之前先聲明。比如上面的例子,如果把函數(shù)max的定義部分放在main后面,那就要在調(diào)用之前聲明。
網(wǎng)站制作、網(wǎng)站設計的關注點不是能為您做些什么網(wǎng)站,而是怎么做網(wǎng)站,有沒有做好網(wǎng)站,給成都創(chuàng)新互聯(lián)一個展示的機會來證明自己,這并不會花費您太多時間,或許會給您帶來新的靈感和驚喜。面向用戶友好,注重用戶體驗,一切以用戶為中心。
在C語言中,函數(shù)聲明只是推薦,而不是強制。
當沒有函數(shù)聲明的時候,編譯器沒辦法對函數(shù)的參數(shù)個數(shù)和類型做檢查,于是帶來風險,但并不是找不到。
你看下你編譯的時候,針對沒有聲明的函數(shù),應該會有一個warning的。代表編譯器檢查到了這個問題,但是并不是致命的。所以只是warning, 而不是error。
有兩處錯誤:
#include stdio.h
#include stdlib.h
long int max (int a,int b,int c)
{
int d;
if(ab)d=a;
else d=b;//第一處,兩句話順序交換,并且應是d與c比較
if(dc)d=c;
return d;
}
void main ()
{
int a,b,c,d;//第二處,沒有定義變量
printf("請輸入3個數(shù)字");
scanf("%d,%d,%d",a,b,c);
d=max(a,b,c);
printf(" %d \n",d);
system("PAUSE");
return 0;
}
很明顯是函數(shù)聲明嘛,書上這樣寫就是錯了。
樓主有不懂可以問哦。
第一,如果你沒有看錯就是你的書錯了,只有int和char類型的函數(shù)不必聲明
第二,C中可以不聲明函數(shù)的條件是3個
1就是上面我說的
2.是被調(diào)函數(shù)定義在主調(diào)函數(shù)之前,可不必聲明
3函數(shù)的外部已聲明過了,個個主調(diào)函數(shù)中不必聲明
對于第二點,很好解釋,因為聲明的目的在于告訴編譯器有這么個自定義函數(shù),返回類型是什么,如果被調(diào)函數(shù)定義在主調(diào)函數(shù)之前,那么編譯器自然就知道了這個函數(shù)
你把f2和f1換下位置并去掉聲明就明白了
再說一句,寫函數(shù)聲明是編寫程序的良好習慣
請注意這是C程序,C官方聲明標準編譯器是Turboc 2。0
不要把C++的概念強加給C
我不是說VC++6不好,而是說既然是在學C,就要用標準的C編譯器,只有標準C編譯器才能正確的學習C的基礎理論
這里涉及到一個路徑的問題。我們編寫好的程序main函數(shù)是入口,當編譯器變異的時候會根據(jù)里面調(diào)用到的其他函數(shù)去尋找加載進來一起編譯(非main函數(shù)如果不被main函數(shù)調(diào)用其實根本上就沒用,這里指的是不被main函數(shù)調(diào)用和main函數(shù)調(diào)用過的函數(shù)調(diào)用),假如是include進來的編譯器就知道去庫函數(shù)里面加載那一個函數(shù),而沒有include進來的就會在本目錄下檢索,假如檢索不到就編譯出錯。庫函數(shù)所在就相當于老地方,而main函數(shù)所在的地方就相當于本地,這兩個都是被編譯器熟知的。
其實除了c語言,java也會這樣,不在同一個包內(nèi)的類需要導入,在同一個包里面的類不需要導入(import),在同一個java文件里面的類(內(nèi)部類或者類外面定義的類都一樣)也不需要導入。因為編譯器知道在這兩個地方找,去類庫找就需要指定哪一個。
分享文章:c語言缺少主函數(shù)聲明,c語言未找到函數(shù)的定義
地址分享:http://aaarwkj.com/article6/dsshcig.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設、電子商務、做網(wǎng)站、品牌網(wǎng)站設計、網(wǎng)站導航、定制開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)