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

正文內(nèi)容

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

2024-07-25 13:06 本頁面
 

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