課程
/后端開發(fā)
/C
/C語言入門
這道題是怎么運(yùn)行的,int函數(shù)里沒有調(diào)用printLine,而且運(yùn)行結(jié)果是怎么出來的,求大佬解釋。
2019-04-07
源自:C語言入門 5-13
正在回答
因?yàn)?static的意思是內(nèi)部函數(shù)(靜態(tài)),外部想調(diào)用他是不可以的。可以理解為一種自控的狀態(tài),不受別人的控制。反之extren是外部函數(shù)(動態(tài)),可以隨意調(diào)動,可以被人操控和使用?,F(xiàn)在我們是在hello.c中調(diào)用text.c的(int) printLine函數(shù)因?yàn)樗徽{(diào)用了,所以它(printLine)是被使用了。要把他定義為外部函數(shù)(extern),所以要改的第一次為:(hello.c)static——extern 第二細(xì)心觀察一下hello.c中的第二行(#include"text".c【包括(含)text.c文件】) 再看一下第九行(say();【調(diào)用text.c】) 細(xì)心觀察一下text.c的源代碼你會發(fā)現(xiàn)其實(shí)這倆行的目的都是一樣的在調(diào)用(hello.c調(diào)用text.c),所以就變成了重復(fù)調(diào)用text.c這時(shí)系統(tǒng)就會報(bào)錯(cuò)。所以我們應(yīng)該將text.c中的第2行(erxtern(默認(rèn))) void say()改成static void say()[這里的static是對函數(shù)的作用范圍的一個(gè)限定,限定該函數(shù)只能在其所處的源文件中使用]? ?這樣就不會和前面的起沖突了。??
第二個(gè)方法就是把hello.c的第二行引用注釋(#include"text.c")去掉? 這樣只要把hello.c中的void printLine()前加上關(guān)鍵字【extern】,因?yàn)閠ext.c中的say()前沒有關(guān)鍵字,所以系統(tǒng)默認(rèn)為extern。這樣外部函數(shù)就可以隨意被調(diào)用了。
希望對你有幫助!
寶慕林5318477
qq_慕先生9035235 回復(fù) 寶慕林5318477
慕圣1432959
qq_恒牙_0
qq_慕用5232731
慕田峪9069542 回復(fù) 慕圣1432959
舉報(bào)
C語言入門視頻教程,帶你進(jìn)入編程世界的必修課-C語言
1 回答為什么這個(gè)要注釋掉
3 回答為什么把第五行注釋掉?
3 回答將第五行代碼刪掉或者注釋掉
1 回答為什么是注釋第二行啊。。。
1 回答第五行為什么要被注釋掉才能編譯
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2019-04-10
因?yàn)?static的意思是內(nèi)部函數(shù)(靜態(tài)),外部想調(diào)用他是不可以的。可以理解為一種自控的狀態(tài),不受別人的控制。反之extren是外部函數(shù)(動態(tài)),可以隨意調(diào)動,可以被人操控和使用?,F(xiàn)在我們是在hello.c中調(diào)用text.c的(int) printLine函數(shù)因?yàn)樗徽{(diào)用了,所以它(printLine)是被使用了。要把他定義為外部函數(shù)(extern),所以要改的第一次為:(hello.c)static——extern 第二細(xì)心觀察一下hello.c中的第二行(#include"text".c【包括(含)text.c文件】) 再看一下第九行(say();【調(diào)用text.c】) 細(xì)心觀察一下text.c的源代碼你會發(fā)現(xiàn)其實(shí)這倆行的目的都是一樣的在調(diào)用(hello.c調(diào)用text.c),所以就變成了重復(fù)調(diào)用text.c這時(shí)系統(tǒng)就會報(bào)錯(cuò)。所以我們應(yīng)該將text.c中的第2行(erxtern(默認(rèn))) void say()改成static void say()[這里的static是對函數(shù)的作用范圍的一個(gè)限定,限定該函數(shù)只能在其所處的源文件中使用]? ?這樣就不會和前面的起沖突了。??
第二個(gè)方法就是把hello.c的第二行引用注釋(#include"text.c")去掉? 這樣只要把hello.c中的void printLine()前加上關(guān)鍵字【extern】,因?yàn)閠ext.c中的say()前沒有關(guān)鍵字,所以系統(tǒng)默認(rèn)為extern。這樣外部函數(shù)就可以隨意被調(diào)用了。
希望對你有幫助!