課程
/后端開發
/C
/C語言入門
hello.c里加exern我懂,可是為什么test.c函數前要加static才可以?
2019-04-15
源自:C語言入門 5-13
正在回答
可以這么理解#include "test.c"的作用是將say()方法加載到了運行環境中,這時內存有了一個say()
say默認也被聲明是extern的,相當于放在了公共區,換句話說就是跨文件全局作用域,方便各個文件調用,這時內存有了兩個say(),該調用哪個?
肯定就會造成沖突,main函數不知道該調用公共區的say(),還是被include進來的say(),所以要么:
注釋#include "test.c",保留公共區的say()
為say()添加static, 這樣include的時候,指定一個say(),沒有公共區的say()
以上為個人猜想,但基本符合實際,有多符合得去驗證
spceG
舉報
C語言入門視頻教程,帶你進入編程世界的必修課-C語言
1 回答test.c為啥要加static
4 回答到底是hello.c調用test.c的,還是test.c調用hello.c的函數
3 回答為什么test.c第二行的void前面要加static,不加就會有錯誤?
2 回答這樣也可以啊,為什么非要在前面加個void函數
2 回答關于我在say函數加了一個static卻可以過
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2019-05-15
可以這么理解#include "test.c"的作用是將say()方法加載到了運行環境中,這時內存有了一個say()
say默認也被聲明是extern的,相當于放在了公共區,換句話說就是跨文件全局作用域,方便各個文件調用,這時內存有了兩個say(),該調用哪個?
肯定就會造成沖突,main函數不知道該調用公共區的say(),還是被include進來的say(),所以要么:
注釋#include "test.c",保留公共區的say()
為say()添加static, 這樣include的時候,指定一個say(),沒有公共區的say()
以上為個人猜想,但基本符合實際,有多符合得去驗證