亚洲欧美第一页_禁久久精品乱码_粉嫩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在线| 久久精品这里都是精品| 欧美日韩亚洲高清一区二区| 国产成人小视频| 日本不卡一二三| 一区二区三区成人| 国产精品女同互慰在线看| 日韩精品一区二区三区在线观看| 91美女精品福利| 国产福利一区二区三区在线视频| 亚洲成在线观看| 中文字幕亚洲一区二区va在线| 日韩欧美aaaaaa| 欧美军同video69gay| 91丨九色丨国产丨porny| 国产精品一二三四五| 免费久久精品视频| 亚洲va欧美va人人爽| 亚洲精品欧美综合四区| 国产日产欧产精品推荐色 | 不卡的电影网站| 青草av.久久免费一区| 亚洲一区二区美女| 亚洲人成网站影音先锋播放| 欧美经典一区二区三区| 久久久美女艺术照精彩视频福利播放| 欧美丝袜丝交足nylons图片| 色久综合一二码| 91在线无精精品入口| 春色校园综合激情亚洲| 国模无码大尺度一区二区三区| 日韩电影网1区2区| 日韩精彩视频在线观看| 亚洲电影视频在线| 一区二区不卡在线视频 午夜欧美不卡在| 国产亚洲短视频| 国产亚洲精品aa午夜观看| 日韩欧美在线网站| 91精品啪在线观看国产60岁| 欧美日韩五月天| 7777精品伊人久久久大香线蕉的 | 欧美精品久久久久久久久老牛影院| 99久久精品国产麻豆演员表| 国产酒店精品激情| 国产精品一区二区三区乱码| 国产成人99久久亚洲综合精品| 国产精品 日产精品 欧美精品| 国产999精品久久| 不卡的电视剧免费网站有什么| 99久久久免费精品国产一区二区| av午夜精品一区二区三区| 99视频超级精品| 欧美在线免费视屏| 欧美精品乱人伦久久久久久| 日韩欧美在线不卡| 国产人成亚洲第一网站在线播放| 国产精品热久久久久夜色精品三区 | 国产激情一区二区三区桃花岛亚洲| 国产在线乱码一区二区三区| 国产福利一区在线| 91麻豆免费在线观看| 欧美日韩aaa| 日韩视频一区二区| 国产日产欧美一区二区三区| 自拍偷拍欧美激情| 亚洲成人av免费| 久久99精品视频| 成人精品免费看| 欧美在线看片a免费观看| 91精品国产乱码| 国产日韩欧美a| 怡红院av一区二区三区| 麻豆精品一区二区三区| 高清在线不卡av| 欧美日韩一区二区三区在线看| 日韩欧美第一区| 成人免费视频在线观看| 亚洲成av人片在线观看| 九一久久久久久| 91在线精品秘密一区二区| 337p亚洲精品色噜噜狠狠| 国产日韩欧美a| 亚洲第一精品在线| 国产91精品久久久久久久网曝门| 99精品国产91久久久久久| 欧美一区午夜精品| 亚洲三级电影网站| 久久se这里有精品| 欧美色中文字幕| 欧美国产亚洲另类动漫| 午夜精品福利久久久| av一区二区三区在线| 日韩视频免费观看高清完整版 | 国产精品女人毛片| 免费av网站大全久久| 99riav一区二区三区| 精品入口麻豆88视频| 亚洲伊人色欲综合网| 国产91精品露脸国语对白| 欧美一区二区三区电影| 中文字幕在线不卡一区二区三区 | 日韩福利视频导航| 91蜜桃传媒精品久久久一区二区| 精品欧美乱码久久久久久| 亚洲一区二区美女| 91亚洲永久精品| 久久九九久精品国产免费直播| 偷窥少妇高潮呻吟av久久免费| 成人午夜电影网站| 精品久久人人做人人爰| 亚洲国产精品久久人人爱蜜臀| 国产69精品久久久久毛片| 亚洲精品在线三区| 午夜精品久久久久久| 91国产视频在线观看| 亚洲欧美自拍偷拍| 国产99久久精品| 久久久亚洲高清| 极品少妇一区二区三区精品视频| 91麻豆精品国产91久久久更新时间 | 91在线视频网址| 中文字幕色av一区二区三区| 国产福利一区二区三区视频| 日韩欧美的一区二区| 青青草国产精品97视觉盛宴| 777久久久精品| 日韩不卡一区二区三区| 欧美日韩国产经典色站一区二区三区 | 99精品欧美一区二区蜜桃免费| 国产亚洲一本大道中文在线| 精品一区二区三区久久久| 日韩写真欧美这视频| 免费人成在线不卡| 日韩欧美第一区| 精品一二三四区| 久久久久久免费毛片精品| 国产专区综合网| 国产欧美精品一区二区色综合朱莉 | 国产区在线观看成人精品 | 男人的j进女人的j一区| 欧美日本在线一区| 日韩影院在线观看| 日韩精品一区二区三区swag| 麻豆国产精品一区二区三区 | jizz一区二区| 樱桃视频在线观看一区| 欧美日韩美少妇| 日韩国产一区二| 精品少妇一区二区三区日产乱码 | 国产精品白丝jk黑袜喷水| 国产亚洲婷婷免费| 岛国一区二区三区| 亚洲视频 欧洲视频| 欧美在线色视频| 蜜桃av一区二区在线观看| 精品99999| 99国产精品久久久久久久久久久| 伊人色综合久久天天人手人婷| 欧美另类变人与禽xxxxx| 男人操女人的视频在线观看欧美| 精品久久久久久亚洲综合网| 国产69精品久久久久毛片| 亚洲同性同志一二三专区| 欧美日韩国产小视频| 激情综合网最新| 国产精品素人视频| 欧美在线三级电影| 国产一区二区不卡在线| 亚洲色图欧美偷拍| 日韩午夜在线观看| 国产91露脸合集magnet| 亚洲午夜三级在线| 久久综合久久综合久久综合| zzijzzij亚洲日本少妇熟睡| 亚洲动漫第一页| 久久噜噜亚洲综合| 在线视频观看一区| 九九久久精品视频| 亚洲人精品一区| 欧美精品一区二区三区高清aⅴ| 波多野结衣在线一区| 丝袜亚洲另类欧美| 欧美国产欧美综合| 91精品免费在线| 99久久久国产精品| 久久国产人妖系列| 亚洲制服丝袜在线| 久久精品一区八戒影视| 欧美日韩日本视频| 成人动漫av在线| 免费观看一级欧美片| 亚洲美女免费视频| 久久久午夜精品理论片中文字幕| 欧美视频中文字幕| 99国产精品国产精品毛片| 久久66热re国产| 五月综合激情日本mⅴ| 欧美高清在线一区|