關鍵字(zi)static在嵌入式(shi)系統中有什么(me)作用(yong)?
時間:2024-10-11 來(lai)源:華清遠見
static關鍵字至少有下列5個作(zuo)用:
(1)設置變(bian)(bian)量的(de)(de)存(cun)儲域,函數(shu)體(ti)內static變(bian)(bian)量的(de)(de)作用(yong)范圍為該函數(shu)體(ti),不同于(yu)auto變(bian)(bian)量,該變(bian)(bian)量的(de)(de)內存(cun)只(zhi)被分配一次(ci),因此其值在下次(ci)調用(yong)時仍維持上次(ci)的(de)(de)值;
(2)限(xian)制變(bian)量(liang)的作用域,在模塊(kuai)內(nei)的static全局變(bian)量(liang)可以被模塊(kuai)內(nei)所(suo)用函(han)數(shu)訪問,但不(bu)能被模塊(kuai)外其它函(han)數(shu)訪問;
(3)限(xian)制函(han)數(shu)(shu)(shu)的作用域,在(zai)模塊(kuai)內的static函(han)數(shu)(shu)(shu)只可被這(zhe)一模塊(kuai)內的其它(ta)函(han)數(shu)(shu)(shu)調用,這(zhe)個函(han)數(shu)(shu)(shu)的使(shi)用范圍被限(xian)制在(zai)聲明它(ta)的模塊(kuai)內;
(4)在類(lei)(lei)中的(de)static成員變(bian)量意味著它(ta)為該類(lei)(lei)的(de)所有實例(li)所共享,也就是(shi)說(shuo)當某個類(lei)(lei)的(de)實例(li)修改了該靜(jing)態(tai)成員變(bian)量,其(qi)修改值為該類(lei)(lei)的(de)其(qi)它(ta)所有實例(li)所見;
(5)在類中的(de)static成(cheng)員函數(shu)(shu)屬(shu)于(yu)整(zheng)個(ge)類所擁有,這個(ge)函數(shu)(shu)不接收this指(zhi)針,因而(er)只能訪問類的(de)static成(cheng)員變量。
(6)在(zai)函數(shu)體內(nei),一(yi)個被(bei)聲明為(wei)靜態的變量(liang)(liang)在(zai)這一(yi)函數(shu)被(bei)調用過程中維持其值不(bu)變(該變量(liang)(liang)存(cun)放在(zai)靜態變量(liang)(liang)區)。
(7) 在(zai)模(mo)(mo)塊(kuai)內(nei)(但在(zai)函(han)數體外(wai)(wai)),一個被(bei)聲明(ming)為(wei)靜(jing)態(tai)的變(bian)量(liang)可以被(bei)模(mo)(mo)塊(kuai)內(nei)所(suo)用(yong)函(han)數訪(fang)問(wen),但不能被(bei)模(mo)(mo)塊(kuai)外(wai)(wai)其它(ta)(ta)函(han)數訪(fang)問(wen)。它(ta)(ta)是一個本地的全(quan)局變(bian)量(liang)。
(8) 在(zai)模(mo)塊內,一(yi)個被(bei)聲明為靜態的(de)函(han)數只(zhi)可被(bei)這一(yi)模(mo)塊內的(de)其它函(han)數調用。那就是(shi),這個函(han)數被(bei)限制在(zai)聲明它的(de)模(mo)塊的(de)本地(di)范圍內使用。
在(zai)Linux的(de)模(mo)(mo)塊編程(cheng)中(zhong),這一(yi)條(tiao)很明顯,所有的(de)函(han)數和全局(ju)變量(liang)(liang)都要用(yong)static關鍵字聲明,將其作用(yong)域限制(zhi)在(zai)本模(mo)(mo)塊內部(bu),與其他模(mo)(mo)塊共享的(de)函(han)數或者變量(liang)(liang)要EXPORT到內核中(zhong)。

