亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 00000029.htm

?? 水木社區 embeded 版精華區 下載
?? HTM
?? 第 1 頁 / 共 2 頁
字號:
<?xml version="1.0" encoding="gb2312"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"/><title>Microsoft Windows CE 編程的十點忠告    turbolinux </title></head><body><center><h1>BBS 水木清華站∶精華區</h1></center><a name="top"></a>發信人:&nbsp;encarta&nbsp;(知更鳥),&nbsp;信區:&nbsp;Embedded&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />標&nbsp;&nbsp;題:&nbsp;Microsoft&nbsp;Windows&nbsp;CE&nbsp;編程的十點忠告&nbsp;<br />發信站:&nbsp;BBS&nbsp;水木清華站&nbsp;(Thu&nbsp;Aug&nbsp;10&nbsp;21:37:50&nbsp;2000)&nbsp;<br />&nbsp;<br />以下轉載自微軟網站&nbsp;<br />&nbsp;<br />&nbsp;<br />Microsoft&nbsp;Windows&nbsp;CE&nbsp;編程的十點忠告&nbsp;<br />----------------------------------------------------------------------------&nbsp;<br />----&nbsp;<br />  最近兩周我們花了大部分時間將已有的應用程序移植到Microsoft&nbsp;Windows&nbsp;CE中。&nbsp;<br />一般說來,這個計劃不是太難。我們起步于Microsoft&nbsp;Win32代碼,當然&nbsp;Windows&nbsp;CE是&nbsp;<br />基于Win32應用程序接口(API)的。有利的是,我們的應用程序(即Raima&nbsp;數據管理器&nbsp;<br />)有方便的使用接口,并包含一個大約由150個子函數組成的庫,這些函數都是由C語言&nbsp;<br />寫成,可以用來創建、管理和訪問數據庫。&nbsp;<br />  按建立應用程序的方式來說,我們原以為將它移植到Windows&nbsp;CE中是一項相對簡單&nbsp;<br />的C語言編程練習。然而,我們不久便遇到好些困難。從粗心大意的錯誤開始,比如在基&nbsp;<br />于Windows&nbsp;NT&nbsp;的Windows&nbsp;CE仿真器上使用Microsoft&nbsp;Windows&nbsp;NT庫,接著又違背Windo&nbsp;<br />ws&nbsp;CE的編程戒律,如&quot;千萬不要給Unicode(國際標準組織10646標準)字符分配奇數內&nbsp;<br />存地址&quot;。&nbsp;<br />  大約有百分之九十的問題或多或少地與Unicode有關。盡管Unicode編程不難,但是&nbsp;<br />,當給單字節字符編寫代碼時,很容易出錯(我有過許多次錯誤)。&nbsp;<br />  下面這些忠告是根據我們在Windows&nbsp;CE上編寫Raima&nbsp;數據管理器的經驗總結出來的&nbsp;<br />,但我相信,在做任何其它Windows&nbsp;CE程序之前,它們都值得借鑒。畢竟大多數Window&nbsp;<br />s開發者,當他們創建第一個Windows&nbsp;CE應用程序時,真正運用的是已掌握的Win32知識&nbsp;<br />。&nbsp;<br />1.&nbsp;不要在仿真器上使用Windows&nbsp;NT庫&nbsp;<br />  這里所討論的第一個錯誤實在太愚蠢了,但我還是陷了進去,也許你也會。當用Mi&nbsp;<br />crosoft&nbsp;VC++(5.0版)創建一個Windows&nbsp;CE程序時,你會發現,包含路徑(include)&nbsp;<br />、&nbsp;庫路徑(library)、及可執行程序路徑被自動調整以匹配反應目標環境的選擇。因&nbsp;<br />此,比如說為Windows&nbsp;CE模擬器建立應用程序時,你會發現,include路徑沒有指向Win&nbsp;<br />32的包含文件(在VC目錄下),而是指向Windows&nbsp;CE包含文件(在WCE目錄下)。千萬別&nbsp;<br />去修改。&nbsp;<br />  由于Windows&nbsp;CE在Windows&nbsp;NT下運行,所以仿真器上運行的程序能夠調用任一Wind&nbsp;<br />ows&nbsp;NT動態鏈接庫(DLL)中的函數,即使這個DLL不是模擬器的成員也一樣。顯然,這不&nbsp;<br />是很好的事,因為相同的函數也許在手持PC(H/PC)或Windows&nbsp;CE設備上不可用,而你的&nbsp;<br />軟件最終要能在這些設備上運行。&nbsp;<br />  第一次將非Unicode應用程序裝入Windows&nbsp;CE仿真器時,你會發現,許多正在使用的&nbsp;<br />函數它都不支持,例如美國國家標準協會(ANSI)定義的字符函數strcpy()。這也許引誘&nbsp;<br />你去鏈接Windows&nbsp;NT&nbsp;運行時間庫,以便能解決所有問題。&nbsp;<br />  如果你是剛開始用Windows&nbsp;CE編程,可能你能用的包含文件和庫文件是明顯的。答&nbsp;<br />案就是,你不要采用那些在寫普通Win32或非Windows&nbsp;CE程序時使用的包含文件和庫文件&nbsp;<br />。&nbsp;<br />2.&nbsp;不要混淆TCHARs和bytes&nbsp;<br />  如果你正在Windows&nbsp;CE上寫非Unicode應用程序,你或許要將所有的字符串從單個字&nbsp;<br />符(chars)轉換為寬字符(widechars)(例如,C變量類型whcar_t)。幾乎所有Windows&nbsp;&nbsp;<br />CE支持的Win32和運行時間庫函數都要求寬字符變量。Windows&nbsp;95不支持Unicode,然而&nbsp;<br />,為了使程序代碼具有可移植性,你要盡可能采用tchar.h中定義的TCHAR類型,不要直&nbsp;<br />接使用wchar_t。&nbsp;<br />  TCHAR是定義為wchar_t還是char,取決于預處理器的符號UNICODE是否定義。同樣,&nbsp;<br />所有有關字符串處理函數的宏,如_tcsncpy宏,它是定義為Unicode函數wcsncpy還是定&nbsp;<br />義為ANSI函數strncpy,取決于UNICODE是否定義。&nbsp;<br />  在現存的Windows應用程序中,有些代碼也許暗示字符長為單字節。這在給字符串分&nbsp;<br />配內存時經常用到,例如:&nbsp;<br />int&nbsp;myfunc(char&nbsp;*p)&nbsp;<br />{&nbsp;<br />char&nbsp;*pszFileName;&nbsp;<br />pszFileName&nbsp;=&nbsp;malloc(MAXFILELEN);&nbsp;<br />if(pszFileName)&nbsp;<br />strncpy(pszFileName,&nbsp;p,&nbsp;MAXFILELEN);&nbsp;<br />/*etc*/&nbsp;<br />  在這段代碼中,分配的內存塊應該寫作(MAXFILELEN&nbsp;*&nbsp;sizeof(char)),但是大多數&nbsp;<br />程序員喜歡將它簡化為MAXFILELEN,因為對于所有的平臺來說sizeof(char)的值等于1。&nbsp;<br />然而,當你用TCHARS代替多個字符時,很容易忘記這種固有的概念,于是將代碼編寫成&nbsp;<br />下面的形式:&nbsp;<br />int&nbsp;myfunc(TCHAR&nbsp;*p)&nbsp;<br />{&nbsp;<br />TCHAR&nbsp;*pszFileName;&nbsp;<br />PszFileName&nbsp;=&nbsp;(TCHAR*)malloc(MAXFILELEN);&nbsp;<br />If&nbsp;(pszFileName)&nbsp;<br />tcsncpy(pszFileName,&nbsp;p,&nbsp;MAXFILELEN);&nbsp;<br />/*etc*/&nbsp;<br />  這是不行的。它馬上會導致出錯。這里的錯誤在于malloc函數中指定變量大小為by&nbsp;<br />tes,然而_tcsncpy函數中使用的第三個變量卻指定為TCHARs而不是bytes。當UNICODE被&nbsp;<br />定義時,一個TCHAR等于兩個字節數(bytes)。&nbsp;<br />上述代碼段應該改寫為:&nbsp;<br />int&nbsp;myfunc(TCHAR&nbsp;*p)&nbsp;<br />{&nbsp;<br />TCHAR&nbsp;*pszFileName;&nbsp;<br />PszFileName&nbsp;=&nbsp;(TCHAR*)malloc(MAXFILELEN&nbsp;*&nbsp;sizeof(TCHAR));&nbsp;<br />if(pszFileName)&nbsp;<br />tcsncpy(pszFileName,&nbsp;p,&nbsp;MAXFILELEN);&nbsp;<br />/*etc*/&nbsp;<br />3.&nbsp;不要將Unicode&nbsp;字符串放入奇數內存地址&nbsp;<br />  在Intel系列處理器上,你可以在一奇數內存地址儲存任何變量或數組,不會導致任&nbsp;<br />何致命的錯誤影響。但在H/PC上,這一點不一定能行&nbsp;?&nbsp;你必須對大于一個字節的數據類&nbsp;<br />型小心謹慎,包括定義為無符號短型(unsigned&nbsp;short)&nbsp;的wchar_t。當你設法訪問它&nbsp;<br />們的時候,將它們置于奇地址會導致溢出。&nbsp;<br />  編輯器經常在這些問題上提醒你。你無法管理堆棧變量地址,并且編輯器會檢查確&nbsp;<br />定這些地址與變量類型是否相匹配。同樣,運行時間庫必須保證從堆中分配的內存總是&nbsp;<br />滿足一個word邊界&nbsp;,所以你一般不必擔心那兩點。但是,如果應用程序含有用memcpy(&nbsp;<br />)函數拷貝內存區域的代碼,或者使用了某種類型的指針算術以確定內存地址,問題也許&nbsp;<br />就出現了。考慮下面的例子:&nbsp;<br />int&nbsp;send_name&nbsp;(TCHAR&nbsp;*&nbsp;pszName)&nbsp;<br />{&nbsp;<br />char&nbsp;*p,&nbsp;*q;&nbsp;<br />int&nbsp;nLen=(_tcslen(pszName)&nbsp;+&nbsp;1)&nbsp;*&nbsp;sizeof(TCHAR);&nbsp;<br />p=maloc(HEADER_SIZE&nbsp;+&nbsp;nLen);&nbsp;<br />if(p)&nbsp;<br />{&nbsp;<br />q&nbsp;=&nbsp;p&nbsp;+&nbsp;HEADER_SIZE;&nbsp;<br />_tcscpy((TCHAR*)q,&nbsp;pszName);&nbsp;<br />}&nbsp;<br />/*&nbsp;etc&nbsp;*/&nbsp;<br />  這段代碼是從堆中分配內存并復制一個字符串,在字符串的開頭留一個HEADER_SIZ&nbsp;<br />E的大小。假設UNICODE定義了,那么該字符串就是一個widechar字符串。如果HEADER_S&nbsp;<br />IZE是一個偶數,這段代碼就會正常工作,但如果HEADER_SIZE為奇數,這段代碼就會出&nbsp;<br />錯,因為q指向的地址也將為奇數。&nbsp;<br />  注意,當你在Intel系列處理器中的Windows&nbsp;CE仿真器上測試這段代碼時,這個問題&nbsp;<br />是不會發生的。&nbsp;<br />  在這個例子中,只要確保HEADER_SIZE為偶數,你就可以避免問題的發生。然而,在&nbsp;<br />某些情況下你也許不能這么做。例如,如果程序是從一臺式PC輸入數據,你也許不得不&nbsp;<br />采用事先定義過的二進制格式,盡管它對H/PC不適合。在這種情況下,你必須采用函數&nbsp;<br />,這些函數用字符指針控制字符串而不是TCHAR指針。如果你知道字符串的長度,就可以&nbsp;<br />用memcpy()復制字符串。因此,采用逐個字節分析Unicode字符串的函數也許足以確定字&nbsp;<br />符串在widechars中的長度。&nbsp;<br />4.&nbsp;在ANSI和Unicode字符串之間進行翻譯&nbsp;<br />  如果你的Windows&nbsp;CE應用程序接口于臺式PC,也許你必須操作PC機中的ANSI字符串&nbsp;<br />

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕亚洲在| av亚洲精华国产精华精华| 色八戒一区二区三区| 中文字幕乱码久久午夜不卡| 国产一区二区三区| 精品99一区二区| 精品一区二区三区的国产在线播放 | 欧美在线三级电影| 一区二区成人在线| 欧美日韩国产免费| 欧美aaa在线| 久久精品视频一区二区| 国产成人丝袜美腿| 最新热久久免费视频| 在线观看不卡一区| 男男gaygay亚洲| 欧美激情在线观看视频免费| 91在线视频免费91| 五月天视频一区| 久久这里只精品最新地址| 成人免费毛片片v| 亚洲国产日韩综合久久精品| 欧美一级高清大全免费观看| 国产精品一区二区在线看| ...xxx性欧美| 欧美区视频在线观看| 国产真实乱子伦精品视频| 国产精品久久久久天堂| 欧美欧美欧美欧美首页| 风间由美一区二区av101| 亚洲综合一区二区三区| 精品国产伦一区二区三区免费| 成人激情黄色小说| 肉色丝袜一区二区| 国产精品色噜噜| 欧美老肥妇做.爰bbww视频| 国产成人在线免费观看| 亚洲va韩国va欧美va| 国产日韩欧美综合一区| 欧美日本精品一区二区三区| 国产成人自拍网| 午夜激情综合网| 国产精品美女一区二区三区| 91精品在线免费| 99精品视频中文字幕| 免费高清在线一区| 亚洲免费大片在线观看| 国产午夜亚洲精品理论片色戒 | 国产精品一二二区| 天堂一区二区在线免费观看| 国产精品久久免费看| 欧美大片日本大片免费观看| 日本韩国欧美在线| 国产aⅴ综合色| 日本成人中文字幕| 亚洲午夜羞羞片| 中文字幕一区二区三区四区| 欧美va亚洲va| 欧美一区二区三区在线视频| 色琪琪一区二区三区亚洲区| 高清日韩电视剧大全免费| 秋霞电影一区二区| 午夜精品福利一区二区三区蜜桃| 亚洲人午夜精品天堂一二香蕉| 久久精子c满五个校花| 日韩一区二区在线播放| 欧美日韩免费电影| 在线精品亚洲一区二区不卡| 成人黄色片在线观看| 国产一区二区在线观看视频| 蜜臀a∨国产成人精品| 午夜av一区二区三区| 一区二区三区四区在线免费观看| 国产精品大尺度| 国产精品国产三级国产普通话蜜臀| ww久久中文字幕| 久久蜜臀精品av| 欧美草草影院在线视频| 欧美一级理论性理论a| 777色狠狠一区二区三区| 欧亚洲嫩模精品一区三区| 91在线视频网址| 色噜噜狠狠色综合欧洲selulu| 91在线高清观看| 一本久道久久综合中文字幕| 色哟哟欧美精品| 欧美最猛性xxxxx直播| 欧美在线观看一二区| 欧洲视频一区二区| 欧美性猛交xxxxxx富婆| 欧美色手机在线观看| 欧美日韩在线观看一区二区 | 99精品久久久久久| 99精品国产99久久久久久白柏 | 亚洲国产日韩av| 亚洲国产精品久久久男人的天堂| 亚洲午夜久久久久久久久久久| 一区二区三区在线观看国产 | 美女www一区二区| 蜜臀av一区二区三区| 美国十次了思思久久精品导航| 久久不见久久见中文字幕免费| 精品一二三四区| 国产成a人亚洲精| 丁香六月久久综合狠狠色| caoporen国产精品视频| 色久综合一二码| 在线不卡一区二区| 精品毛片乱码1区2区3区| 国产日韩欧美一区二区三区综合| 亚洲欧美在线观看| 亚洲韩国一区二区三区| 麻豆国产91在线播放| 福利一区二区在线观看| 色噜噜狠狠色综合中国| 日韩一区二区在线看| 中文字幕欧美国产| 夜夜揉揉日日人人青青一国产精品 | 成人免费看的视频| 欧洲色大大久久| 久久综合色之久久综合| 国产精品国产三级国产aⅴ中文| 亚洲综合在线五月| 激情综合网av| 在线亚洲欧美专区二区| 欧美xxxxxxxxx| 亚洲男人电影天堂| 韩国v欧美v亚洲v日本v| 色哟哟一区二区三区| www一区二区| 亚洲成人www| 成人高清av在线| 日韩欧美一级精品久久| 亚洲四区在线观看| 久久成人羞羞网站| 欧洲亚洲精品在线| 国产精品美女www爽爽爽| 免费观看在线综合| 在线观看日韩一区| 欧美国产精品一区二区三区| 日韩中文字幕不卡| 色婷婷久久综合| 国产欧美日本一区二区三区| 日韩成人精品在线观看| 色综合久久久久久久久久久| 久久综合久久综合亚洲| 日韩中文字幕亚洲一区二区va在线| 97久久超碰精品国产| 久久久99精品免费观看不卡| 日本女优在线视频一区二区| 欧美怡红院视频| 中文字幕在线观看不卡| 国产在线不卡一区| 日韩写真欧美这视频| 亚洲最新在线观看| www.一区二区| 国产日韩欧美激情| 久久www免费人成看片高清| 欧美日韩另类国产亚洲欧美一级| 亚洲少妇30p| 北岛玲一区二区三区四区| 久久久精品天堂| 国内久久婷婷综合| 欧美一二三四区在线| 日韩精品视频网站| 欧美日韩精品二区第二页| 夜夜亚洲天天久久| 欧美唯美清纯偷拍| 亚洲午夜久久久久久久久久久 | 欧美一区二区性放荡片| 亚洲二区在线观看| 欧美三级视频在线播放| 亚洲一区二区三区爽爽爽爽爽| 91啪亚洲精品| 尤物在线观看一区| 日本精品一级二级| 亚洲午夜免费福利视频| 欧美绝品在线观看成人午夜影视| 亚洲一本大道在线| 国产91色综合久久免费分享| 国产欧美日韩卡一| 成人国产精品免费观看视频| 国产午夜精品久久久久久久| 国产69精品久久777的优势| 国产精品久久久久影视| av中文字幕不卡| 亚洲美女淫视频| 欧美日韩中文国产| 日本视频中文字幕一区二区三区| 日韩欧美卡一卡二| 国产剧情在线观看一区二区| 欧美国产丝袜视频| 91美女在线观看| 婷婷一区二区三区| 精品国产一区二区亚洲人成毛片 | www.欧美日韩| 亚洲黄色av一区| 欧美一区二区三区日韩视频| 国产在线视频不卡二| 中文字幕第一页久久|