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

正文內(nèi)容

嵌入式瀏覽器開發(fā)畢業(yè)設(shè)計(jì)畢業(yè)論文-文庫(kù)吧資料

2025-07-04 13:06本頁(yè)面
  

【正文】 。例如,假設(shè)你現(xiàn)在有一個(gè) C++ 源文件 ,該源文件包含有自定義的頭文件 ,則目標(biāo)文件 明確依賴于兩個(gè)源文件: 和 。* 要?jiǎng)?chuàng)建的項(xiàng)目依賴于哪些文件。在 UNIX 系統(tǒng)中,習(xí)慣使用 Makefile 作為 makfile 文件。
當(dāng)修改了其中某個(gè)源文件時(shí),如果其他源文件依賴于該文件,則也要重新編譯所有依賴該文件的源文件。
實(shí)際上,make 工具通過一個(gè)稱為 makefile 的文件來完成并自動(dòng)維護(hù)編譯工作。這些工作包括:如果僅修改了某幾個(gè)源文件,則只重新編譯這幾個(gè)源文件;如果某個(gè)頭文件被修改了,則重新編譯所有包含該頭文件的源文件。 GNU make 和 makefile(1) GNU make簡(jiǎn)介
在大型的開發(fā)項(xiàng)目中,通常有幾十到上百個(gè)的源文件,如果每次均手工鍵入 gcc 命令進(jìn)行編譯的話,則會(huì)非常不方便。fPIC選項(xiàng)產(chǎn)生位置獨(dú)立的代碼。通常使用 ar 程序把一些目標(biāo)文件(.o)組合在一起,成為一個(gè)單獨(dú)的庫(kù),然后運(yùn)行 ranlib,以給庫(kù)加入一些索引信息。
在可以使用 gdb 調(diào)試程序之前,必須使用 g 選項(xiàng)編譯源文件。在 X Window 系統(tǒng)中,有一個(gè) gdb 的前端圖形工具,稱為 xxgdb。
Wall 生成所有警告信息。
UMACRO 取消對(duì) MACRO 宏的定義。通常用在建立共享庫(kù)時(shí)。
O3 比 O2 更進(jìn)一步優(yōu)化,包括 inline 函數(shù)。
O 或 O1 優(yōu)化生成代碼。用在生成可執(zhí)行文件時(shí)。
m486 針對(duì) 486 進(jìn)行代碼優(yōu)化。
LDIRECTORY 指定額外的函數(shù)庫(kù)搜索路徑DIRECTORY。GNU 調(diào)試器可利用該信息。
E 只運(yùn)行 C 預(yù)編譯器。
DMACRO 以字符串“1”定義 MACRO 宏。
例如可以如下調(diào)用 g++ 命令編譯、連接并生成可執(zhí)行文件:$ g++ o hello
$ ./hello
(2) gcc/egcs 的主要選項(xiàng)
ansi 只支持 ANSI 標(biāo)準(zhǔn)的 C 語(yǔ)法。
但是,gcc 命令只能編譯 C++ 源文件,而不能自動(dòng)和 C++ 程序使用的庫(kù)連接。一般來說,C 編譯器通過源文件的后綴名來判斷是 C 程序還是 C++ 程序。利用 gcc 命令可同時(shí)編譯并連接 C 和 C++ 源程序。GCC 是 GNU 的 C 和 C++ 編譯器。不應(yīng)過分強(qiáng)調(diào)注釋的作用,應(yīng)盡量采用好的編碼風(fēng)格而不是添加過多的注釋。對(duì)變量名,不贊成使用大小寫混寫的形式,但鼓勵(lì)使用描述性的名稱;盡可能不使用全局變量;不采用匈牙利命名法表示變量的類型;采用短小精悍的名稱表示局部變量;保持函數(shù)短小,從而避免使用過多的局部變量。如下所示:
int function(int x, int y){
if (x == y) {
...
} else {
...
}
return 0。除函數(shù)的定義體外,應(yīng)當(dāng)將左大括號(hào)放在行尾,而將右大括號(hào)放在行首。如果程序的縮進(jìn)超過 3 級(jí),則應(yīng)考慮重新設(shè)計(jì)程序。在利用 C 語(yǔ)言編寫程序時(shí),應(yīng)當(dāng)符合其簡(jiǎn)潔的設(shè)計(jì)原則,而不應(yīng)當(dāng)使用非常復(fù)雜的變量命名方法。
在 Linux 中,我們經(jīng)??吹降氖嵌x非常簡(jiǎn)單的函數(shù)接口和變量名稱。
(4) C 語(yǔ)言編程風(fēng)格
良好的編程風(fēng)格可以在許多方面幫助開發(fā)人員,可以增加代碼的可讀性,并幫助你理清頭緒。errno 中包含有錯(cuò)誤代碼。在 C 語(yǔ)言中,操作系統(tǒng)的系統(tǒng)調(diào)用通常通過函數(shù)調(diào)用的形式完成,在 Linux 系統(tǒng)中,系統(tǒng)調(diào)用函數(shù)定義在 glibc 中。圖形文件操作函數(shù)庫(kù)包括: libungif、libtiff、libpng、Imlib, libjpeg 等,可分別用來操作 GIF、TIFF、PNG、JPEG 以及其他一些格式圖形文件。glibc 基于如下標(biāo)準(zhǔn):ISO C: C 編程語(yǔ)言的國(guó)際標(biāo)準(zhǔn),即 ANSI C,POSIX,Berkeley Unix,SVID,XPG。GNU 的 C 函數(shù)庫(kù),即 glibc,是 Linux 上最重要的函數(shù)庫(kù),它定義了 ISO C 標(biāo)準(zhǔn)指定的所有的庫(kù)函數(shù),以及由 POSIX 或其他 UNIX 操作系統(tǒng)變種指定的附加特色,還包括有與 GNU 系統(tǒng)相關(guān)的擴(kuò)展。
(2) 函數(shù)庫(kù)和系統(tǒng)調(diào)用
glibc:眾所周知,C 語(yǔ)言并沒有為常見的操作,例如輸入/輸出、內(nèi)存管理,字符串操作等提供內(nèi)置的支持。
XPG:X/Open 可移植性指南。System V 接口描述(SVID)是描述 ATamp。
POSIX:該標(biāo)準(zhǔn)最初由 IEEE 開發(fā)的標(biāo)準(zhǔn)族,部分已經(jīng)被 ISO 接受為國(guó)際標(biāo)準(zhǔn)。 第四章 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(美國(guó)國(guó)家標(biāo)準(zhǔn)局)于 1989 年制定的 C 語(yǔ)言標(biāo)準(zhǔn)。jval)。TDVOID TDWidgetDoAction(TDPWidgetAction pAnchor){ jsval jval。處理該widget對(duì)該消息的響應(yīng)。首先:取得當(dāng)前焦點(diǎn)所在的widgetpWidget=TDWidgetGetAtPoint(pThis,pt,amp。問題3:如何建立Javascript對(duì)象與結(jié)點(diǎn)樹上結(jié)點(diǎn)的對(duì)應(yīng)?解決: Javascript對(duì)象與結(jié)點(diǎn)樹是同時(shí)生成的,它們的共同性質(zhì)是結(jié)點(diǎn)具有相同屬性,Javascript對(duì)象根據(jù)ID屬性查找樹,找到要操作的對(duì)應(yīng)結(jié)點(diǎn)。問題2解決:利用注冊(cè)給對(duì)象的函數(shù)實(shí)現(xiàn)操作符的功能化。}將對(duì)象加入:JS_SetPrivate(JS_GetGlobalContext(), (JSObject *)*aReturn, aElement)。*aReturn = JS_NewObject(JS_GetGlobalContext(), amp。ElementClass,proto,JSPROP_ENUMERATE)。aName)){ parent = js_GetGlobalObject()。初始化該對(duì)象:TD_JSXMLElementClassInit(JS_GetGlobalContext(), (void **)amp。其次就是要將某些結(jié)點(diǎn)注冊(cè)為JavaScript對(duì)象。注冊(cè)過程在BuildModel中進(jìn)行。2. javascript如何改變HTML元素的屬性,并操作WIDGET重畫。眼睛/abrimg id=image0 src=/img/html當(dāng)鼠標(biāo)移到文字上時(shí),觸發(fā)事件mouseover,調(diào)用ChangeImage()函數(shù),使得圖像源(SRC)發(fā)生變化,重新調(diào)入新圖片。}/script/heada onmouseover=ChangeImage(0)。初始化定時(shí)器:TDTimerListInit()。RegisterClassColorKey (cx,globalObj)。RegisterClassRect (cx,globalObj)。注冊(cè)其它類:RegisterClassPoint (cx,globalObj)。定義系統(tǒng)函數(shù):JS_DefineFunctions(cx, globalObj, g_functions)。globalClass, 0, 0)。初始化cx:cx = JS_NewContext(rt, STACK_CHUNK_SIZE)。這也包含了利用JavaScript API進(jìn)行應(yīng)用的基本思路。瀏覽器主體程序的設(shè)計(jì)者可以通過JavaScript Engine,方便的實(shí)現(xiàn)各種應(yīng)用,畢竟JavaScript API太基礎(chǔ)了,直接使用不太方便。JavaScript API實(shí)際就是Javscript解釋器的對(duì)外接口函數(shù)庫(kù)。生成的shell 程序,對(duì)比瀏覽器對(duì)JavaScript的支持,相同之處是使用相同的包含JavaScript runtime的Library 或 DLL,我們把這部份相同的Library或 DLL稱為JavaScript API,我們實(shí)際開發(fā)JavaScript應(yīng)用,也是在JavaScript API基礎(chǔ)上工作,而不用過多考慮其內(nèi)部的實(shí)現(xiàn)。既可以編譯成小的 shell 程序(像早期的BASIC),又連接Library后生成交互式的JavaScript解釋器, 文件。而且被廣泛使用,實(shí)際已成為了進(jìn)行JavaScript應(yīng)用開發(fā)的標(biāo)準(zhǔn)平臺(tái)。 第三章 瀏覽器JavaScript支持的實(shí)現(xiàn)本部份主要針對(duì)Mozilla和Netscape瀏覽器源代碼的JavaScript部份進(jìn)行了分析,闡述了瀏覽器Javascript實(shí)現(xiàn)的機(jī)制。盡管如此,對(duì)SCRIPT的特殊處理還是有待完善,盡管這同時(shí)也會(huì)帶來一些問題,需要進(jìn)行大量的測(cè)試,來保證新加入代碼的穩(wěn)定性。因此,在詞法分析時(shí)要對(duì)SCRIPT標(biāo)記進(jìn)行特殊處理,遇到SCRIPT就應(yīng)逐字符讀入后面的內(nèi)容,直到遇到下一個(gè)/SCRIPT標(biāo)記。 Bit Token在應(yīng)用中存在的問題及修改意見由于HTML的標(biāo)記多是成對(duì)出現(xiàn)的,并且存在SCRIPT這樣的特殊元素,其內(nèi)容為Javascript程序,函數(shù)的字符串參數(shù)等可能包含其它的元素標(biāo)記。 //取首節(jié)點(diǎn) while(pTtokenList!=NULL) //循環(huán)直至處理完所有節(jié)點(diǎn) { switch(pTtokenListtokentype) {//根據(jù)節(jié)點(diǎn)類型,做不同的處理 case HTML_TITLE: …… case HTML_TEXT: …… default: …… } //switch pTtokenList=pTtokenListnext。并可以對(duì)網(wǎng)頁(yè)中的元素進(jìn)行統(tǒng)計(jì)和語(yǔ)法校驗(yàn)。而“HTML智能分析”卻能很好的解決。使用常規(guī)的簡(jiǎn)單算法進(jìn)行HTML到TXT的轉(zhuǎn)換無法解決這些問題。而在HTML中,在無PRE這種特殊情況時(shí),回車都是忽略不記的。其主要設(shè)計(jì)思路是,在Bit Token詞法分析器的基礎(chǔ)上,結(jié)合瀏覽器布局的基本算法,對(duì)影響到TXT版面效果的元素進(jìn)行處理。根據(jù)用戶設(shè)置的版式,將分析和編輯的結(jié)果,自動(dòng)生成新的網(wǎng)頁(yè)。具有以下主要功能:智能提取網(wǎng)頁(yè)中的文字信息,智能排版,并可在進(jìn)行編輯后保存。 HTML詞法分析的應(yīng)用 應(yīng)用舉例:HTML詞法分析程序通常應(yīng)用于瀏覽器設(shè)計(jì)、網(wǎng)頁(yè)制作軟件設(shè)計(jì)等領(lǐng)域,本人以一個(gè)使用VC開發(fā)的軟件“HTML智能分析”來舉例說明,下載網(wǎng)址:。htmlimg src=“” width=200 height=100a HREF=首都在線/a/html分析后,數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)如下:img首都在線100heightdatahrefatext200widthsrc/a可以看到,詞法分析的結(jié)果是一個(gè)元素節(jié)點(diǎn)鏈表,每個(gè)節(jié)點(diǎn)的屬性也形成了一個(gè)鏈表,元素節(jié)點(diǎn)是有先后順序的,元素屬性的先后順序是無所謂的。采用分段進(jìn)行詞法分析,實(shí)際每次分析的代碼會(huì)不足1024字節(jié),余下的部份匯入到下一段的分析過程即可,直到所有內(nèi)容被分析完畢。解決的辦法是,采用回溯,確認(rèn)要分析的部份至少包含1個(gè)完整元素。對(duì)此的改進(jìn)辦法就是分段進(jìn)行詞法分析,不僅極大的提高了效率(在某些情況下約提高30倍),也有利于瀏覽器整體設(shè)計(jì),因?yàn)楫?dāng)網(wǎng)頁(yè)較大時(shí),若等待全部?jī)?nèi)容傳輸完畢,再一次性完成詞法分析和布局,用戶會(huì)感到等待時(shí)間過長(zhǎng),一般現(xiàn)在成熟的瀏覽器都采用邊傳輸,邊分析,邊顯示。 由此看來,主算法十分簡(jiǎn)單而清晰,主要是Token_ConsumTag()和Token_Consum_PlainText()這兩個(gè)函數(shù)起關(guān)鍵作用,由于其中涉及到許多細(xì)節(jié)問題,此處不予詳述。處理完畢,指針指向下一個(gè)元素首。(4) 如果遇到 ,則跳過(不應(yīng)該出現(xiàn)此情況,為了容錯(cuò))。 算法 基本算法:首先介紹基本的算法:(1) 從存儲(chǔ)網(wǎng)頁(yè)的字符串中,順序讀入一個(gè)字符(2) 如果遇到 ,認(rèn)為遇到TAG(元素),處理該元素,使用函數(shù)Token_ConsumTag(),處理完畢后,指針移到該元素尾。}BitToken,*BitPToken。 //是否是結(jié)束元素,如/bodyBitTokenAttrList *attrList。char *pData。以下是元素節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu):typedef struct BitToken{int type。 struct TokenList *next。typedef struct TokenList{ BitToken *token。詞法分析的目的就是生成這樣一個(gè)鏈表。 //元素名稱表,指向靜態(tài)數(shù)據(jù)}BitTokenContext,*BitPTokenContext。 //元素節(jié)點(diǎn)鏈表BitTokenList *tokenList_tail。int global_curPosition。char * global_strBuffer。 //當(dāng)前正在處理的HTML代碼int bufferLength。 釋放:主要是對(duì)內(nèi)存的釋放。 主體的數(shù)據(jù)流分析:逐字符的進(jìn)行判斷,確定數(shù)據(jù)的歸屬類型。 Bit Token的組成及其功能Bit Token作為Netbit Browser的詞法分析部份,負(fù)責(zé)對(duì)接收的HTML代碼進(jìn)行詞法分析,主要的目的是提取網(wǎng)頁(yè)中元素的名稱及其屬性,并以恰當(dāng)?shù)男问剑窗匆欢ǖ臄?shù)據(jù)結(jié)構(gòu))加以保存
點(diǎn)擊復(fù)制文檔內(nèi)容
語(yǔ)文相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1