亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3450|回復: 0
打印 上一主題 下一主題
收起左側

export/import extern 三者之間的區別

[復制鏈接]
跳轉到指定樓層
樓主
ID:105323 發表于 2016-2-24 17:55 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
在C與匯編混合編程中:
IMPORT 符號 {[WEAK]}​

在匯編中,該偽操作指令的作用是告訴編譯器,該符號是在外源文件中定義的,​這一點跟extern的作用是一樣的,但與extern不同的是不論該符號是否在本源文件中被用到,編譯器均將該符號添加到本文件的符號表中。如果在符號后添加了該聲明 {[WEAK]}​,則該符號即使在外源文件中沒有被找到,編譯器也不會報錯,否則就會報錯。
EXTERN符號 {[WEAK]} [size=17.27272605896px]​ 在匯編中,該符號是在外源文件中定義的,在本源文件中可能被用到,如果沒用到,編譯器就不會添加到本源文件的符號表中;{[WEAK]} 作用同上。
EXPORT   符號  
在匯編中,對于本源文件中的一個函數,通過EXPORT給這個函數定義一個新的函數的入口,包括名字,地址等,供外面文件(如C源文件)調用。這個函數會被放到kernelimage的__ksymtabsection中,當用到這個函數的模塊在runtime時被加載的時候,loader就會從__ksymtabsection解析這個函數。


所以從源文件的角度講,這就涉及到內部函數與外部函數的問題,在匯編中以IMPORT EXPORT EXTERN來加以聲明,告知編譯器。IMPORT的意思是該函數或符號是外源文件定義的,在本文件中可能加以引用。EXPORT的意思是該函數或符號​重新定義一個新的函數入口,包括名稱和地址,以供外源文件引用。
另:匯編語言的指令不區分大小寫,但是函數,符號,字符串等還是區分大小寫的;​
在C語言中,也有內部函數與外部函數的區別,格式分別如下:
static 函數類型聲明  函數名(形參表);
static int  function(int a,int b); 這是通過static定義了一個內部函數,對外源文件進行屏蔽,尤其是在多人分工編寫程序時,即使名字一樣,也不會發生沖突,增加了程序的可靠性。
同理,
extern​ int function(int a,int b);就可以為其他源文件調用,如果省略extern,則默認為外部函數。
這是從程序源文件之間的角度來講,分為內部變量與外部變量、內部函數與外部函數;
那么借此,在從源文件內部的角度來表一表,在某一個源文件中,變量的分類:​
在一個源文件內,從作用域的角度講:變量分為全局變量局部變量​;從變量的存儲方式上講,又分為靜態存儲方式動態存儲方式,靜態存儲方式分配的存儲空間是固定的,在整個程序運行期間一直占有該內存空間,不釋放。動態則是動態分配的,其生命周期結束后,就會是釋放,所以根據作用域與存儲方式主要分為以下三種變量:靜態全局變量靜態局部變量局部變量,這里主要強調一下靜態局部變量,其他兩種都比較好理解,靜態局部變量就是讓某子函數的局部變量的存儲單元固定,不釋放,該變量初始化一次后,當再次運行到此函數時,該變量的初始化語句跳過不再執行,該變量依然保持著上一次程序運行時的最后一次的賦值,從這個角度叫,該函數不具備可重入性。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表