freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

嵌入式瀏覽器開發(fā)畢業(yè)設計畢業(yè)論文(編輯修改稿)

2025-07-25 13:06 本頁面
 

【文章內容簡介】 a onmouseover=ChangeImage(1)。眼睛/abrimg id=image0 src=/img/html當鼠標移到文字上時,觸發(fā)事件mouseover,調用ChangeImage()函數(shù),使得圖像源(SRC)發(fā)生變化,重新調入新圖片。由此產生兩個關鍵問題:1. javascript如何獲取HTML元素的名稱和屬性。2. javascript如何改變HTML元素的屬性,并操作WIDGET重畫。下面分別闡述這兩個問題:首先介紹涉及到的瀏覽器流程:WidgetPaintProcessElementBuildPresBuildModelTokenizePARSE問題1解決:HTML元素作為Javascript對象進行注冊。注冊過程在BuildModel中進行。BuildModel的首要任務是將Token后的結點按包含關系展成一棵樹。其次就是要將某些結點注冊為JavaScript對象。注冊的過程是:定義新對象:JSObject *proto。初始化該對象:TD_JSXMLElementClassInit(JS_GetGlobalContext(), (void **)amp。proto))使用JS_DefineObject或JS_NewObject定義對象屬性:根據是否定義了該元素的名稱區(qū)別對待:if(TD_XMLContentIsNamedItem(aElement,amp。aName)){ parent = js_GetGlobalObject()。*aReturn=JS_DefineObject(JS_GetGlobalContext(),js_GetGlobalObject(),aNamemStr,amp。ElementClass,proto,JSPROP_ENUMERATE)。}else{ parent=aElementparentmScriptObject。*aReturn = JS_NewObject(JS_GetGlobalContext(), amp。ElementClass, proto, parent)。}將對象加入:JS_SetPrivate(JS_GetGlobalContext(), (JSObject *)*aReturn, aElement)。這樣,在編譯時,HTML元素的標識就能被Javascript編譯器識別,否則會報錯變量未定義。問題2解決:利用注冊給對象的函數(shù)實現(xiàn)操作符的功能化。具體可理解為:=””被執(zhí)行時,相當于為對象設置或改變屬性,此時SetElementProperty函數(shù)被調用(該函數(shù)在注冊該對象時由JSXMLElementClassInit捆綁給該對象,其內容由用戶自己定義),SetElementProperty通過函數(shù)指針調用函數(shù)TD_JSXMLSetAtrByID,改變結點樹上結點屬性,并重新生成該節(jié)點對應的widget,重畫界面。問題3:如何建立Javascript對象與結點樹上結點的對應?解決: Javascript對象與結點樹是同時生成的,它們的共同性質是結點具有相同屬性,Javascript對象根據ID屬性查找樹,找到要操作的對應結點。 瀏覽器消息響應在主消息循環(huán)中調用TDWidgetProcessMsg,處理與widget有關消息。首先:取得當前焦點所在的widgetpWidget=TDWidgetGetAtPoint(pThis,pt,amp。index)。處理該widget對該消息的響應。最后一般為調用JavaScript執(zhí)行,實現(xiàn)實際響應。TDVOID TDWidgetDoAction(TDPWidgetAction pAnchor){ jsval jval。 if(pAnchor) TD_EvaluateScript(JS_GetGlobalContext(),js_GetGlobalObject(), pAnchor,pAnchor,TDNULL,0,amp。jval)。}其中pAnchor(widget)對應的JavaScript源碼,解釋執(zhí)行的結果就是調用為該對象注冊的函數(shù)來重畫該widget,從而實現(xiàn)動態(tài)效果。 第四章 Linux程序開發(fā)技術及 GTK圖形程序開發(fā) Linux下的程序開發(fā)環(huán)境(1) 標準 (ANSI C, POSIX, SVID, XPG, ...)
ANSI C:這一標準是 ANSI(美國國家標準局)于 1989 年制定的 C 語言標準。 后來被 ISO(國際標準化組織)接受為標準,因此也稱為 ISO C。
POSIX:該標準最初由 IEEE 開發(fā)的標準族,部分已經被 ISO 接受為國際標準。
SVID:System V 的接口描述。System V 接口描述(SVID)是描述 ATamp。T Unix System V 操作 系統(tǒng)的文檔,是對 POSIX 標準的擴展超集。
XPG:X/Open 可移植性指南。X/Open 可移植性指南(由 X/Open Company, ), 是比 POSIX 更為一般的標準。
(2) 函數(shù)庫和系統(tǒng)調用
glibc:眾所周知,C 語言并沒有為常見的操作,例如輸入/輸出、內存管理,字符串操作等提供內置的支持。相反,這些功能一般由標準的“函數(shù)庫”來提供。GNU 的 C 函數(shù)庫,即 glibc,是 Linux 上最重要的函數(shù)庫,它定義了 ISO C 標準指定的所有的庫函數(shù),以及由 POSIX 或其他 UNIX 操作系統(tǒng)變種指定的附加特色,還包括有與 GNU 系統(tǒng)相關的擴展。目前,流行的 Linux 系統(tǒng)使用 glibc 以上的版本。glibc 基于如下標準:ISO C: C 編程語言的國際標準,即 ANSI C,POSIX,Berkeley Unix,SVID,XPG。其他重要函數(shù)庫:除 glibc 之外,流行的 Linux 發(fā)行版中還包含有一些其他的函數(shù)庫,這些函數(shù)庫具有重要地位,例如:GNU Libtool,CrackLib,LibGTop。圖形文件操作函數(shù)庫包括: libungif、libtiff、libpng、Imlib, libjpeg 等,可分別用來操作 GIF、TIFF、PNG、JPEG 以及其他一些格式圖形文件。
(3) 系統(tǒng)調用系統(tǒng)調用是操作系統(tǒng)提供給外部程序的接口。在 C 語言中,操作系統(tǒng)的系統(tǒng)調用通常通過函數(shù)調用的形式完成,在 Linux 系統(tǒng)中,系統(tǒng)調用函數(shù)定義在 glibc 中。
談到系統(tǒng)調用時,需要注意如下幾點:系統(tǒng)調用函數(shù)通常在成功時返回 0 值,不成功時返回非零值。errno 中包含有錯誤代碼。系統(tǒng)調用是一個非常耗時 的過程。
(4) C 語言編程風格
良好的編程風格可以在許多方面幫助開發(fā)人員,可以增加代碼的可讀性,并幫助你理清頭緒。編程風格最能體現(xiàn)一個程序員的綜合素質。
在 Linux 中,我們經??吹降氖嵌x非常簡單的函數(shù)接口和變量名稱。C 語言最初來自 UNIX 操作系統(tǒng),與 UNIX 的設計原則一樣,C 語言被廣泛認可和使用的一個重要原因是它的靈活性以及簡潔性。在利用 C 語言編寫程序時,應當符合其簡潔的設計原則,而不應當使用非常復雜的變量命名方法。Linus 為 Linux 內核定義的 C 語言編碼風格要點如下:
縮進時,使用長度為 8 個字符寬的 Tab 鍵。如果程序的縮進超過 3 級,則應考慮重新設計程序。
大括號的位置。除函數(shù)的定義體外,應當將左大括號放在行尾,而將右大括號放在行首。函數(shù)的定義體應將左右大括號放在行首。如下所示:
int function(int x, int y){
if (x == y) {
...
} else {
...
}
return 0。}應采用簡潔的命名方法。對變量名,不贊成使用大小寫混寫的形式,但鼓勵使用描述性的名稱;盡可能不使用全局變量;不采用匈牙利命名法表示變量的類型;采用短小精悍的名稱表示局部變量;保持函數(shù)短小,從而避免使用過多的局部變量。保持函數(shù)短小精悍。不應過分強調注釋的作用,應盡量采用好的編碼風格而不是添加過多的注釋。
(5) 庫和頭文件的保存位置
函數(shù)庫:/lib:系統(tǒng)必備共享庫
/usr/lib:標準共享庫和靜態(tài)庫
/usr/i486linuxlibc5/lib:libc5 兼容性函數(shù)庫
/usr/X11R6/lib:X11R6 的函數(shù)庫
/usr/local/lib:本地函數(shù)庫
頭文件:
/usr/include:系統(tǒng)頭文件
/usr/local/include:本地頭文件 Linux 上的編譯器和調試器(1) Linux 上的 C/C++ 編譯器和調試器
運行 gcc/egcs:Linux 中最重要的軟件開發(fā)工具是 GCC。GCC 是 GNU 的 C 和 C++ 編譯器。實際上,GCC 能夠編譯三種語言:C、C++ 和 Object C(C 語言的一種面向對象擴展)。利用 gcc 命令可同時編譯并連接 C 和 C++ 源程序。
例如利用如下的命令可編譯生成可執(zhí)行文件,并執(zhí)行程序:$ gcc o factorial
$ ./factorial 5
GCC 可同時用來編譯 C 程序和 C++ 程序。一般來說,C 編譯器通過源文件的后綴名來判斷是 C 程序還是 C++ 程序。在 Linux 中,C 源文件的后綴名為 .c,而 C++ 源文件的后綴名為 .C 或 .cpp。
但是,gcc 命令只能編譯 C++ 源文件,而不能自動和 C++ 程序使用的庫連接。因此,通常使用 g++ 命令來完成 C++ 程序的編譯和連接,該程序會自動調用 gcc 實現(xiàn)編譯。
例如可以如下調用 g++ 命令編譯、連接并生成可執(zhí)行文件:$ g++ o hello
$ ./hello
(2) gcc/egcs 的主要選項
ansi 只支持 ANSI 標準的 C 語法。這一選項將禁止 GNU C 的某些特色,
c 只編譯并生成目標文件。
DMACRO 以字符串“1”定義 MACRO 宏。
DMACRO=DEFN 以字符串“DEFN”定義 MACRO 宏。
E 只運行 C 預編譯器。
g 生成調試信息。GNU 調試器可利用該信息。
IDIRECTORY 指定額外的頭文件搜索路徑DIRECTORY。
LDIRECTORY 指定額外的函數(shù)庫搜索路徑DIRECTORY。
lLIBRARY 連接時搜索指定的函數(shù)庫LIBRARY。
m486 針對 486 進行代碼優(yōu)化。
o FILE 生成指定的輸出文件。用在生成可執(zhí)行文件時。
O0 不進行優(yōu)化處理。
O 或 O1 優(yōu)化生成代碼。
O2 進一步優(yōu)化。
O3 比 O2 更進一步優(yōu)化,包括 inline 函數(shù)。
shared 生成共享目標文件。通常用在建立共享庫時。
static 禁止使用共享連接。
UMACRO 取消對 MACRO 宏的定義。
w 不生成任何警告信息。
Wall 生成所有警告信息。
(3)gdb
GNU 的調試器稱為 gdb,該程序是一個交互式工具,工作在字符模式。在 X Window 系統(tǒng)中,有一個 gdb 的前端圖形工具,稱為 xxgdb。gdb 是功能強大的調試程序,可完成如下的調試:設置斷點;監(jiān)視程序變量的值;程序的單步執(zhí)行;修改變量的值。
在可以使用 gdb 調試程序之前,必須使用 g 選項編譯源文件??稍?makefile 中如下定義 CFLAGS 變量:CFLAGS = g,運行 gdb 調試程序時通常使用如下的命令:gdb progname
(4) 創(chuàng)建和使用靜態(tài)庫創(chuàng)建一個靜態(tài)庫是相當簡單的。通常使用 ar 程序把一些目標文件(.o)組合在一起,成為一個單獨的庫,然后運行 ranlib,以給庫加入一些索引信息。
(5) 創(chuàng)建和使用共享庫特殊的編譯和連接選項D_REENTRANT使得預處理器符號 _REENTRANT 被定義,這個符號激活一些宏特性。fPIC選項產生位置獨立的代碼。由于庫是在運行的時候被調入,因此這個選項是必需的,shared選項告訴編譯器產生共享庫代碼。 GNU make 和 makefile(1) GNU make簡介
在大型的開發(fā)項目中,通常有幾十到上百個的源文件,如果每次均手工鍵入 gcc 命令進行編譯的話,則會非常不方便。因此,人們通常利用 make 工具來自動完成編譯工作。這些工作包括:如果僅修改了某幾個源文件,則只重新編譯這幾個源文件;如果某個頭文件被修改了,則重新編譯所有包含該頭文件的源文件。利用這種自動編譯可大大簡化開發(fā)工作,避免不必要的重新編譯。
實際上,make 工具通過一個稱為 makefile 的文件來完成并自動維護編譯工作。makefile 需要按照某種語法進行編寫,其中說明了如何編譯各個源文件并連接生成可執(zhí)行文件,并定義了源文件之間的依賴關系。
當修改了其中某個源文件時,如果其他源文件依賴于該文件,則也要重新編譯所有依賴該文件的源文件。
默認情況下,GNU make 工具在當前工作目錄中按如下順序
點擊復制文檔內容
語文相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1