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