亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
export/import extern 三者之間的區(qū)別
[打印本頁]
作者:
51黑黑黑
時間:
2016-2-24 17:55
標題:
export/import extern 三者之間的區(qū)別
在C與匯編混合編程中:
IMPORT 符號 {[WEAK]}
在匯編中,該偽操作指令的作用是告訴編譯器,該符號是在外源文件中定義的,這一點跟extern的作用是一樣的,
但與extern不同的是
,
不論該符號是否在本源文件中被用到,編譯器均將該符號添加到本文件的符號表中。如果在符號后添加了該聲明
{[WEAK]},則該符號即使在外源文件中沒有被找到,編譯器也不會報錯,否則就會報錯。
EXTERN符號 {[WEAK]}
[size=17.27272605896px] 在匯編中,該符號是在外源文件中定義的,在本源文件中可能被用到,如果沒用到,編譯器就不會添加到本源文件的符號表中;
{[WEAK]}
作用同上。
EXPORT 符號
在匯編中,對于本源文件中的一個函數(shù),通過EXPORT給這個函數(shù)定義一個新的函數(shù)的入口,包括名字,地址等,供外面文件(如C源文件)調(diào)用。
這個函數(shù)會被放到kernelimage的__ksymtabsection中,當用到這個函數(shù)的模塊在runtime時被加載的時候,loader就會從__ksymtabsection解析這個函數(shù)。
所以從源文件的角度講,這就涉及到內(nèi)部函數(shù)與外部函數(shù)的問題,在匯編中以IMPORT EXPORT EXTERN來加以聲明,告知編譯器。IMPORT的意思是該函數(shù)或符號是外源文件定義的,在本文件中可能加以引用。EXPORT的意思是該函數(shù)或符號重新定義一個新的函數(shù)入口,包括名稱和地址,以供外源文件引用。
另:
匯編語言的指令不區(qū)分大小寫,但是函數(shù),符號,字符串等還是區(qū)分大小寫的;
在C語言中
,也有內(nèi)部函數(shù)與外部函數(shù)的區(qū)別,格式分別如下:
static 函數(shù)類型聲明 函數(shù)名(形參表);
static int function(int a,int b); 這是通過static定義了一個內(nèi)部函數(shù),對外源文件進行屏蔽,尤其是在多人分工編寫程序時,即使名字一樣,也不會發(fā)生沖突,增加了程序的可靠性。
同理,
extern
int function(int a,int b);就可以為其他源文件調(diào)用,
如果省略extern,則默認為外部函數(shù)。
這是從程序源文件之間的角度來講,分為內(nèi)部變量與外部變量、內(nèi)部函數(shù)與外部函數(shù);
那么借此,在從源文件內(nèi)部的角度來表一表,在某一個源文件中,變量的分類:
在一個源文件內(nèi),從作用域的角度講:變量分為
全局變量
與
局部變量
;從變量的存儲方式上講,又分為
靜態(tài)存儲方式
與
動態(tài)存儲方式
,靜態(tài)存儲方式分配的存儲空間是固定的,在整個程序運行期間一直占有該內(nèi)存空間,不釋放。動態(tài)則是動態(tài)分配的,其生命周期結(jié)束后,就會是釋放,所以根據(jù)作用域與存儲方式主要分為以下三種變量:
靜態(tài)全局變量
,
靜態(tài)局部變量
,
局部變量
,這里主要強調(diào)一下靜態(tài)局部變量,其他兩種都比較好理解,靜態(tài)局部變量就是讓某子函數(shù)的局部變量的存儲單元固定,不釋放,該變量初始化一次后,當再次運行到此函數(shù)時,該變量的初始化語句跳過不再執(zhí)行,該變量依然保持著上一次程序運行時的最后一次的賦值,從這個角度叫,該函數(shù)不具備可重入性。
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1