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

正文內(nèi)容

軟件編程規(guī)范培訓(xùn)案例和練習(xí)(編輯修改稿)

2025-05-29 23:29 本頁面
 

【文章內(nèi)容簡介】 DWORD dwMapMode, dwCIR, dwBe。 DWORD dwCCID, dwResult, dwAtmPort。 wTotalNetIWF = 。 ...}DWORD RestoreFrHdlcIntIWFData ( WORD wSlotID, BYTE *pReadPoint ){ WORD wCount, wTotalHdlcIWF。 DWORD dwCCID, dwPeerCCID, dwAtmPort, dwPeerAtmPort。 DWORD dwResult。 BYTE bSlotID, bPeerSlotID。 WORD wHdlcPort, wOldAtmPort, wCIR。 WORD wPeerHdlcPort, wPeerOldAtmPort。 ...} 其中涉及DLCI值的變量都為WORD(即無符號短整型)類型,在程序的處理時,出現(xiàn)WORD和DWORD(無符號長整型)類型在一句中同時存在的情況,至此可以判斷問題出在這里。由于DLCI值在不同類型時的取值范圍不同,前三種類型的取值范圍為16~991,第四種取值范圍為2048~126975,第五種取值范圍為131072~4194303,所以當(dāng)采用前三種DLCI類型時,采用WORD類型最大值為65535,已經(jīng)完全夠用了;而對于第四種類型時,其取值在超過65535時,獲取DLCI值的函數(shù)_GetFrDlci()采用DWORD類型,而負(fù)責(zé)保存和恢復(fù)的兩個函數(shù)SaveFrNetExtIWFData()和RestoreFrNetExtIWFData(),都把DLCI的值當(dāng)作WORD類型進(jìn)行處理,因此導(dǎo)致DLCI取值越界,于是程序把原本為長整型的DLCI強(qiáng)制轉(zhuǎn)換成整型,從而導(dǎo)致DLCI值在恢復(fù)時,比原數(shù)據(jù)小65536。而在程序運(yùn)行過程中,這些數(shù)據(jù)保存在DRAM中,程序運(yùn)行直接從DRAM中獲取數(shù)據(jù),程序不會出錯;當(dāng)FRI板復(fù)位或插拔后,需要從FLASH中讀取數(shù)據(jù),此時恢復(fù)函數(shù)的錯誤就表現(xiàn)出來。 另一個問題是為什么23/4類型的DLCI數(shù)據(jù)不能恢復(fù)?這是由于對于23/4類型的PVC,其DLCI的取值范圍為:131072~4194303,而程序強(qiáng)制轉(zhuǎn)換并恢復(fù)的數(shù)據(jù)最大只能是65535,所以這條PVC不能恢復(fù)。 至此,DLCI數(shù)據(jù)恢復(fù)出錯的原因完全找到,解決的方法是將DLCI的類型改為DWORD類型。從這個案例可以看出,在程序開發(fā)中一個很低級的錯誤,將在實(shí)際工作中造成很嚴(yán)重的后果?!尽俊菊? 文】 在FRI板上建幾條FRPVC,其DLCI類型分別為:10Bit/2bytes、10bit/3bytes、16bit/3bytes、17bit/4bytes、23bit/4bytes。相應(yīng)的DLCI值為:12399126971234567,然后保存,重起MUX,觀察PVC的恢復(fù)情況,結(jié)果DLCI值為1234和991的PVC正確恢復(fù),而DLCI=126975的PVC恢復(fù)的數(shù)據(jù)錯誤為61439,而DLCI=1234567的PVC完全沒有恢復(fù)。 對于17/4類型,DLCI=126975的PVC在恢復(fù)時變成61439,根據(jù)這條線索,查找原因,發(fā)現(xiàn)12697561439=65535,轉(zhuǎn)化二進(jìn)制就是10000000000000000,也就是說在數(shù)據(jù)恢復(fù)或保存時把原數(shù)據(jù)的第一個1給忽略了。此時第一個想法是:在程序處理中,把無符號長整型變量當(dāng)作短整型變量處理了,為了證實(shí)這個判斷,針對17bit/4bytes類型又重新設(shè)計測試用例:(1) 先建PVC,DLCI=65535,然后保存,重起MUX,觀察PVC的恢復(fù)情況,發(fā)現(xiàn)PVC能夠正確恢復(fù);(2)再建PVC,DLCI=65536,然后保存,重起MUX,觀察PVC的恢復(fù)情況,此時PVC不能正確恢復(fù)。至此基本可以斷定原因就是出在這里。帶著這個目的查看原代碼,發(fā)現(xiàn)在以下代碼中有問題:int _GetFrDlci( DWORD* dwDlci, char* str, DWORD dwDlciType, DWORD dwPortType, DWORD dwSlotID, DWORD dwPortID){ DWORD tempDlci。 char szArg[80]。 char szLine[80]。 ID LowPVCEP。 DWORD dwDlciVal[5][2] = { {16,1007}, {16,1007}, {1024,64511}, {2048,129023}, {131072,4194303} } 。 ...}typedef struct tagFrPppIntIWF{ ... WORD wHdlcPort。 WORD wHdlcDlci。 WORD wPeerHdlcDlci。 WORD wPeerOldAtmPort。 ... } SFrPppIntIWFData。DWORD SaveFrNetIntIWFData ( DWORD *pdwWritePoint ){ BYTE bSlotID, bPeerSlotID。 DWORD dwCCID, dwPeerCCID。 WORD wHdlcPort, wAtmPort, wIci, wPeerIci, wPeerHdlcPort 。 WORD wCount。 ...}DWORD SaveFrNetExtIWFData ( DWORD *pdwWritePoint ){ BYTE bSlotID。 DWORD dwCCID, dwPeerCCID。 WORD wHdlcPort, wAtmPort, wIci 。 WORD wCount。 ...[wCount].bSlotID = bSlotID。 [wCount].wHdlcPort = wHdlcPort。 [wCount].wHdlcDlci = gFrPVCEP[bSlotID ][ gFrPVCC[bSlotID][dwCCID].dwLoPVCEP ].dwDLCI。 [wCount].wOldAtmPort = wAtmPort。 [wCount].wAtmDlci = gFrPVCEP[ bSlotID ][ gFrPVCC[bSlotID][dwCCID].dwHiPVCEP ].dwDLCI。 [wCount].dwMapMode = gFrPVCC[bSlotID][dwCCID].dwMapMode?!    。? }DWORD RestoreFrNetExtIWFData ( WORD wSlotID, BYTE *pReadPoint ){ WORD wCount, wTotalNetIWF。 BYTE bSlotID, bHdlcDlciType, bAtmDlciType。 WORD wOldAtmPort, wAtmDlci, wHdlcPort, wHdlcDlci。 DWORD dwMapMode, dwCIR, dwBe。 DWORD dwCCID, dwResult, dwAtmPort。 wTotalNetIWF = 。 ...}DWORD RestoreFrHdlcIntIWFData ( WORD wSlotID, BYTE *pReadPoint ){ WORD wCount, wTotalHdlcIWF。 DWORD dwCCID, dwPeerCCID, dwAtmPort, dwPeerAtmPort。 DWORD dwResult。 BYTE bSlotID, bPeerSlotID。 WORD wHdlcPort, wOldAtmPort, wCIR。 WORD wPeerHdlcPort, wPeerOldAtmPort。 ...} 其中涉及DLCI值的變量都為WORD(即無符號短整型)類型,在程序的處理時,出現(xiàn)WORD和DWORD(無符號長整型)類型在一句中同時存在的情況,至此可以判斷問題出在這里。由于DLCI值在不同類型時的取值范圍不同,前三種類型的取值范圍為16~991,第四種取值范圍為2048~126975,第五種取值范圍為131072~4194303,所以當(dāng)采用前三種DLCI類型時,采用WORD類型最大值為65535,已經(jīng)完全夠用了;而對于第四種類型時,其取值在超過65535時,獲取DLCI值的函數(shù)_GetFrDlci()采用DWORD類型,而負(fù)責(zé)保存和恢復(fù)的兩個函數(shù)SaveFrNetExtIWFData()和RestoreFrNetExtIWFData(),都把DLCI的值當(dāng)作WORD類型進(jìn)行處理,因此導(dǎo)致DLCI取值越界,于是程序把原本為長整型的DLCI強(qiáng)制轉(zhuǎn)換成整型,從而導(dǎo)致DLCI值在恢復(fù)時,比原數(shù)據(jù)小65536。而在程序運(yùn)行過程中,這些數(shù)據(jù)保存在DRAM中,程序運(yùn)行直接從DRAM中獲取數(shù)據(jù),程序不會出錯;當(dāng)FRI板復(fù)位或插拔后,需要從FLASH中讀取數(shù)據(jù),此時恢復(fù)函數(shù)的錯誤就表現(xiàn)出來。 另一個問題是為什么23/4類型的DLCI數(shù)據(jù)不能恢復(fù)?這是由于對于23/4類型的PVC,其DLCI的取值范圍為:131072~4194303,而程序強(qiáng)制轉(zhuǎn)換并恢復(fù)的數(shù)據(jù)最大只能是65535,所以這條PVC不能恢復(fù)。 至此,DLCI數(shù)據(jù)恢復(fù)出錯的原因完全找到,解決的方法是將DLCI的類型改為DWORD類型。從這個案例可以看出,在程序開發(fā)中一個很低級的錯誤,將在實(shí)際工作中造成很嚴(yán)重的后果。正確使用邏輯與amp。amp。、屏蔽amp。操作符【】【案例描述】:由于C語言中位與比求模效率高,因而系統(tǒng)設(shè)計時,對于模128的地方都改為與127,系統(tǒng)定義的宏為define MOD128 127和define W_MOD 127(定義的宏的名字易引起誤解),但實(shí)際程序中還是采
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)教案相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1