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