你把大括號的位置放錯(cuò)了,sushu函數(shù)被定義在了main函數(shù)里面,但是按照C語言的規(guī)定,函數(shù)不允許嵌套定義,所以你的sushu相當(dāng)于沒有定義(不知為何你的編譯器沒有報(bào)錯(cuò)說不允許在函數(shù)內(nèi)定義函數(shù))。解決方法是把你最后面多出來的大括號移到main函數(shù)最后面。

創(chuàng)新互聯(lián)建站是專業(yè)的合作網(wǎng)站建設(shè)公司,合作接單;提供網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行合作網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
C語言沒有bool類型,需要自己來定義,同時(shí)IsPrime函數(shù)的變量i重復(fù)定義了修改如下。
#?include?stdio.h?????????????//這是代碼
typedef?enum??//定義bool類型
{
true??=?0,
false?=?1,
}bool;
bool?IsPrime(int?m)???????//第三行
{??
int?i;
for?(i?=?2;?i??m;?++i)//?多了一個(gè)int
{
if(m%i?==?0)
break;
}
if(i?==?m)
return?true;
else
return?false;
}
把被調(diào)用函數(shù)寫到調(diào)用函數(shù)上面去,這樣就可以免去聲明。
這里你也可以把被調(diào)用函數(shù)剪切到調(diào)用函數(shù)上面去做一下測試。
出現(xiàn)該錯(cuò)誤的原因?yàn)榫幾g時(shí)只變編譯了源文件的一部分,故在鏈接時(shí)無法從編譯好的目標(biāo)代碼中找到print函數(shù),所以出錯(cuò)。
根據(jù)你的源文件結(jié)構(gòu),個(gè)人推薦先單獨(dú)編譯源文件為多個(gè)object文件,再統(tǒng)一鏈接。
方法如下
gcc?-c?main.c?#?-c參數(shù)的作用是讓gcc只編譯,不鏈接
gcc?-c?test.c
gcc?-o?main?main.o?test.o?#?將編譯好的目標(biāo)代碼鏈接
當(dāng)然,以上是在gcc為編譯器的前提下執(zhí)行,如使用clang等其他編譯器,方法類似(clang的調(diào)用方法與gcc高度兼容)
兩種情況:
1、定義的函數(shù)名與調(diào)用時(shí)的函數(shù)名不相同,可能是手誤,拼寫錯(cuò)誤
2、函數(shù)調(diào)用寫到了函數(shù)定義之前了
請?zhí)峁┫鄳?yīng)的代碼或截圖,方便進(jìn)一步分析原因
這種屬于函數(shù)返回值的隱式聲明。 隱式聲明的函數(shù)返回值類型都是int 當(dāng)然了,這個(gè)只需要了解一下就好了。不建議這么寫。 現(xiàn)在很多編譯器都不允許這樣的聲明出現(xiàn)。如果C語言中調(diào)用函數(shù)前面沒有定義它的返回值類型
新聞標(biāo)題:c語言調(diào)用函數(shù)未定義 c語言函數(shù)未定義是什么意思
當(dāng)前路徑:http://chinadenli.net/article38/hpeppp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、手機(jī)網(wǎng)站建設(shè)、ChatGPT、虛擬主機(jī)、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)