當(dāng)前位置:首頁(yè) > 學(xué)習(xí)資源 > 講師博文 > 關(guān)鍵字static在嵌入式系統(tǒng)中有什么作用?
static關(guān)鍵字至少有下列5個(gè)作用:
(1)設(shè)置變量的存儲(chǔ)域,函數(shù)體內(nèi)static變量的作用范圍為該函數(shù)體,不同于auto變量,該變量的內(nèi)存只被分配一次,因此其值在下次調(diào)用時(shí)仍維持上次的值;
(2)限制變量的作用域,在模塊內(nèi)的static全局變量可以被模塊內(nèi)所用函數(shù)訪問(wèn),但不能被模塊外其它函數(shù)訪問(wèn);
(3)限制函數(shù)的作用域,在模塊內(nèi)的static函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用,這個(gè)函數(shù)的使用范圍被限制在聲明它的模塊內(nèi);
(4)在類(lèi)中的static成員變量意味著它為該類(lèi)的所有實(shí)例所共享,也就是說(shuō)當(dāng)某個(gè)類(lèi)的實(shí)例修改了該靜態(tài)成員變量,其修改值為該類(lèi)的其它所有實(shí)例所見(jiàn);
(5)在類(lèi)中的static成員函數(shù)屬于整個(gè)類(lèi)所擁有,這個(gè)函數(shù)不接收this指針,因而只能訪問(wèn)類(lèi)的static成員變量。
(6)在函數(shù)體內(nèi),一個(gè)被聲明為靜態(tài)的變量在這一函數(shù)被調(diào)用過(guò)程中維持其值不變(該變量存放在靜態(tài)變量區(qū))。
(7) 在模塊內(nèi)(但在函數(shù)體外),一個(gè)被聲明為靜態(tài)的變量可以被模塊內(nèi)所用函數(shù)訪問(wèn),但不能被模塊外其它函數(shù)訪問(wèn)。它是一個(gè)本地的全局變量。
(8) 在模塊內(nèi),一個(gè)被聲明為靜態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用。那就是,這個(gè)函數(shù)被限制在聲明它的模塊的本地范圍內(nèi)使用。
在Linux的模塊編程中,這一條很明顯,所有的函數(shù)和全局變量都要用static關(guān)鍵字聲明,將其作用域限制在本模塊內(nèi)部,與其他模塊共享的函數(shù)或者變量要EXPORT到內(nèi)核中。