日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 編程 > 易語言 > 正文

總結升級易語言支持庫保證向下兼容性

2024-07-21 23:02:54
字體:
來源:轉載
供稿:網友

易語言支持庫升級之后,要保證向下兼容性,主要是做到以下幾點:

一:保證原有的易語言源程序(.e)能正常打開(兼容點1)、正常編譯(兼容點2)、編譯結果正確(兼容點3);

二:保證原有的易語言程序(.exe)能正常運行(兼容點4)、運行結果正確(兼容點5)。

這里說的“原有的易語言源程序”和“原有的易語言程序”是指,替換新版支持庫文件之前,使用舊版支持庫編寫的易語言源程序,和使用該源程序編譯生成的可執行程序。

本文主要就此問題結合具體情況進行分析和總結。

一,為支持庫增加一條命令

新增加的命令,必須放在所有原有命令的后面,否則將違反兼容點2和4,更無法保證兼容點3和5。這是因為,在源程序和EXE中,記錄的都是命令的索引,一旦在中間插入一條命令,將導致后面的命令索引全變了,進而導致非常嚴重的錯位問題。只要記住,總是在所有命令的最后添加新的命令,就不會引入兼容性問題。具體到數據類型的成員方法,與上面的分種一致,因為它也是使用支持庫中唯一的全局函數表的,但這里引入了一個新的細節,有一個LIB_DATA_TYPE_INFO.m_pnCmdsIndex 用于指定方法在全局函數表中的命令索引,所以通過它可以調整各成員方法的順序,這種做法通常不會引入兼容性問題。

二,為命令增加一個參數,或修改命令的參數

新增加的參數,必須放在所有參數的后面,否則將違反兼容點2,3,4,5;必須允許省略該參數(AS_DEFAULT_VALUE_IS_EMPTY)或該參數有默認值(AS_HAS_DEFAULT_VALUE);同時在編寫代碼讀取該參數值時要小心,須判斷nArgCount和MDATA_INF.m_dtDataType(否則違反兼容點4,5),大致大代如下:

void fn_Global_SetWindowRgn (PMDATA_INF pRetData, INT nArgCount, PMDATA_INF pArgInf) { int nArg1 = pArgInf[0].m_int; int nArg2 = pArgInf[1].m_int; //假設第三個參數是新版添加的參數 int nArg3 = 0; if(nArgCount > 2 && pArgInf[2].m_dtDataType != _SDT_NULL) { nArg3 = pArgInf[2].m_int; } //... }

修改一個已有命令的參數時,不能隨便修改數據類型,否則將違反兼容點2,3,4,5,要改也只能改成通用型(同時在代碼中根據參數傳遞來的真實類型(MDATA_INF.m_dtDataType)做相應處理)。參數的名稱和說明,因為都是文本,可以隨便改,有會有兼容性問題,但不要改的意思與原來相反哦(排除原來失誤寫反了的情況),改變參數語義往往會導致代碼改動,進而導致違反兼容點5。

三,為窗口組件增加屬性

新增加的屬性,必須放在已有屬性的后面,否則違反兼容點4,5,因為易語言運行時是通過屬性的索引讀寫屬性值的。然后在序列化屬性值時,提高一個版本號,讀取時先判斷版本,舊版序列化出的數據少,就不能多讀。在此提示,序列化屬性值時,一定要先寫出版本號,如果沒有版本號,后續的兼容性問題多多。

(TODO:這一段另成一文)但即使有了版本號,使用不當,也會導致升級時的麻煩,我前一段就遇到過,代碼有這么一句:if(dwVersion > CURRENT_VER) return FALSE; 版本號比現在能處理的版本號大,出現在什么情況呢,用舊版支持庫打開/運行用新版支持庫編譯的易源程序/程序。返回假是合理的(畢竟不能完全處理這種情況),但是比較粗暴(這意味著無法用舊版支持庫打開用新版支持庫編寫的源程序/程序,這不是向下兼容的問題,是向上兼容的問題),如果能盡量讀取,放棄不能識別的數據,溫和的處理,效果更好。簡單的把這條判斷語句刪除,有用嗎?當然沒用,舊版的支持庫已經在用戶手上了,編譯結果是確定的,你的改動只能體現在新版中,而對舊版無能為力。解決這個問題需要技巧,我采取的方案是,版本號不升反降!即,把CURRENT_VER減小,那么我序列化出的數據,版本號比以前還小,舊版支持庫里的那條判斷(if(dwVersion > CURRENT_VER))就不起作用了,嘿嘿。新的序列化數據版本更低,但寫的數據更多,需要擔心舊版支持庫讀出多余的數據來嗎?當然不用,舊版支持庫的編譯結果和運行結果是確定的。只要新版支持庫中識別出這種情況,不要因為版本號小就認為是舊版就行了,同時后續升級的方便,再引入一個新的版本號,存到原有序列化數據的最后,這樣再次升級時直接判斷新版本號就行了,原有的那套版本號停止使用。這一段有點亂,需整理。

四,為數據類型增加私有成員

如果某個數據類型已經有了一個或多個私有成員,升級時需要增加一個私有成員,該怎么辦,直接在LIB_DATA_TYPE_ELEMENT 數組中添加一項嗎?不行!這樣將違反兼容點4,5,因為對象所占用內存是在由EXE分配的,舊的EXE中只為對象分配了N個成員的空間,而新庫要去訪問第N+1個成員,不就發生內存訪問越界的錯誤了嗎?解決方案是,把原來的N個私有成員連用新增加的成員,集中存儲到一塊新分配的內存中,然后把這個內存地址存儲到原有的第一個私有成員位置上(原有的其它成員位置廢棄不用)。因為即使是舊EXE也會調用新支持庫中的構造函數和析構函數,所以改變私有成員存儲位置不會影響程序的執行。這種方案對代碼的影響是非常大的,需要修改很多地方(所有對私有成員的讀寫),但是為了保證支持庫的向下兼容性,這種付出是值得的。


注:相關教程知識閱讀請移步到易語言教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
日韩福利视频导航| 欧美亚洲国产日韩| 欧美日韩国产综合久久| www中文字幕| 亚洲午夜91| 91精品综合久久久久久 | 国产免费一级片| 中文字幕日韩欧美| 亚洲高清在线免费| 久久精品国产91精品亚洲| 精品久久久三级| 亚洲福利在线视频| 激情婷婷亚洲| av中文天堂在线| 免费在线国产| 国产在线一在线二| 欧美 日韩 国产在线观看| 精品欧美不卡一区二区在线观看| 亚洲黄色www| 二区中文字幕| 欧美色视频一区二区三区在线观看| 国产男女av| 午夜国产视频 | 久久婷婷综合国产| 蜜臀久久精品| 国产乱国产乱老熟300| 91精品国产高清| 欧美日韩中文字幕日韩欧美| 中文av字幕一区| 日韩中文字幕第一页| 欧美日韩精品电影| 久久精品国产成人一区二区三区| 国产xxx在线| 欧美日韩国产高清视频| 久久精品夜夜夜夜久久| 91精品国产日韩91久久久久久| 91精品国产91久久久久| 欧洲精品二区| 日韩在线不卡| 欧美三级中文字幕在线观看| 91精品国产综合久久香蕉最新版 | 国产一区三区三区| 欧美另类专区| 国产欧美久久久精品影院| 久久精品国产91精品亚洲| 美女黄a一级视频| 欧美日韩一二三四| 欧美日韩性视频| 最近中文字幕在线中文视频| 不卡在线视频| 日韩久久久精品| 国产 欧美 在线| 亚州黄色一级| 91精品国产高清91久久久久久| 国产小视频在线观看| 在线欧美日韩国产| av中文网站| 欧美日韩视频在线| 日本xxxwww免费视频| 欧美日韩国产片| 91精品国产91久久久久久青草| 欧美日韩亚洲视频| 日韩欧美国产一二三区| 精品国产乱码一区二区| 中文字幕日韩免费视频| 国产91久久久久| 99久热re在线精彩视频| 国产一级视频| 亚洲三级国产| 亚洲v中文字幕| 欧美日韩中文字幕一区| 一区视频在线播放| 色综合影院在线| 91精品久久久久久蜜臀| 国产视频aaa| 在线精品观看| 成人精品国产福利| 欧美日韩在线中文字幕| 91色在线看| 久久精品一二三| 91精品国产综合久久蜜臀| 亚洲高清不卡一区| 在线一区免费| 精品中文字幕视频| 亚洲第一视频| 在线不卡日本| 精品乱人伦一区二区三区| 中文字幕综合在线| 91精品视频国产| 精品999视频| 国产一区在线观看视频| 国产小视频在线观看| 首页国产欧美久久| 亚洲一区不卡在线| aaa大片在线观看| 欧美日韩亚州综合| 国产精品一区二三区| 国产一二三精品| 不卡一二三区| 欧美日韩在线中文字幕| 欧美日韩三级视频| 国产免费播放一区二区| 日韩中文字幕在线视频播放| 欧美日韩亚洲综合| 日韩福利视频导航| 天天综合天天| 国产免费一级片| 天天摸日日摸狠狠添| 午夜一区二区三区视频 | 亚州福利视频| 樱花草www在线| 欧美日韩免费精品| 欧美中日韩在线| 一级日韩一级欧美| 欧美婷婷久久| 91精品在线观看入口| 色综合天天性综合| 国产一区日韩| 日韩不卡在线观看| 久久 天天综合| 国产真实乱子伦精品视频| 激情五月综合| 国产拍揄自揄精品视频麻豆| 国产一区久久久| 国产乱一区二区| 91精品久久久久久久久久| 亚洲综合在线中文字幕| 日韩免费不卡avV| 中文字幕线观看| 精品一二三四| 欧美大片在线观看一区| 欧美日韩精品电影| 免费看黄资源大全高清| 一级片在线播放| 亚洲福利在线看| 成人h视频在线观看| 国产69精品久久app免费版| av一区二区高清| 中文字幕欧美日韩在线| 韩国一区二区av| 1024国产在线| 日韩亚洲欧美中文在线| 免费日韩精品中文字幕视频在线| 中文字幕欧美亚洲| 久草中文在线观看| 色综合久久六月婷婷中文字幕| 日本视频久久久| 日韩欧美国产一二三区| 欧美亚洲另类制服自拍| 日韩在线观看一区| 日韩中文字幕在线视频播放 | h片精品在线观看| 日韩国产在线观看一区| 日韩 欧美 中文| 一级特黄大欧美久久久| 国产字幕在线看| 国产不卡一区二区在线观看| 一区二区日韩免费看| 视频一区三区| 国产午夜精品视频| 精品网站999| 中文字幕狠狠干| 国产真实乱子伦精品视频| 影音先锋中文字幕在线观看| 91精品国产入口| 国产高清视频一区二区| 一区二区精品免费| 成人a在线观看| 欧美日韩色综合| 天天综合天天| 亚洲图片小说综合| 国产在线小视频| 日韩一级在线视频| 欧美日韩国产一级片| 久久久久久久久99精品| 在线日韩中文字幕| 欧美日韩在线三级| 久久欧美中文字幕| www.xxxx精品| 99视频在线看| 中文字幕在线欧美| 国产黄色在线免费观看| 国产无遮挡在线视频免费观看| 国产欧美日韩最新| 一区二区视频免费看| 二区中文字幕| 91精品国产自产观看在线| 亚洲三级av| 日韩你懂的电影在线观看| 亚洲一区视频在线观看视频| 日韩视频精品| 日韩1区在线| 综合激情国产一区| a级在线免费观看| 91亚洲欧美| 久久99精品久久久久婷婷| 亚洲大片精品永久免费| a级在线免费观看| 婷婷精品进入| 日韩在线中文视频| 日韩精品不卡一区二区| 日韩va亚洲va欧洲va国产| 久久精品国产视频| 国产乱码在线| 91精品国产欧美日韩| av免费看在线| 一区二区在线高清视频| 免费日韩精品中文字幕视频在线| 91精品国产91综合久久蜜臀 | 国产黄色片中文字幕| 天天综合日日夜夜精品| 亚洲高清在线免费| 欧美一级一级性生活免费录像| 区日韩二区欧美三区| 91精品国产91综合久久蜜臀| 日韩午夜黄色| 国产在线黄色| 欧美另类久久久品| 国产亚洲一区字幕| 日韩精品在线免费观看视频| 九七久久人人| 最近免费中文字幕在线第一页| 日韩美女中文字幕| 欧美日韩成人综合| 日韩精品一区二区三区视频播放| 99久热re在线精彩视频| 午夜一区二区视频| 国产绿帽一区二区三区| 国产v日产∨综合v精品视频| 国产欧美三级| 91久久精品午夜一区二区| 中文精品在线| 亚洲羞羞网站| 99国产成 人 综合 亚洲欧美| 亚洲久草视频| 中文精品在线| 91精品高清| 日韩欧美一二三四区| 日韩欧美中文| 精品在线一区二区三区| 国产裸体歌舞团一区二区| 中文字幕在线精品| 欧美日韩国产中字| 国产亚洲二区| 亚洲欧美小说国产图片| 欧洲一级精品| 国产一区在线观看视频| 精品视频999| 欧美日韩高清在线| 91精品无人成人www| 一本大道一区二区三区| 中文国产字幕在线观看| 日韩欧美专区在线| 欧美日韩亚洲第一| 日韩欧美在线中字| 日韩久久不卡| 91蜜桃在线视频| 成人a在线观看| 精品中文字幕在线| 日韩在线视频观看正片免费网站| www.91香蕉视频| 在线观看精品国产| 欧美另类专区| 欧美亚洲视频在线看网址| 国产传媒久久久| 一区二区中文视频| 欧美日韩三级在线| 欧美日韩精品高清| 国产蜜臀在线| 欧美日韩在线精品成人综合网| 精品久久久三级| 日本精品二区| 成人一区二区不卡免费| 欧美日韩在线不卡| 一区三区二区视频| 综合图区亚洲白拍在线| 亚洲一区在线观看视频| 精品日韩在线观看| 国产欧美高清在线| 亚洲一区精品电影| 亚洲欧洲日韩在线| 欧美日韩综合在线观看| 国产一级在线播放| 日韩色在线观看| 国产小视频在线| 中文欧美字幕免费| 精品久久在线观看| 韩国av一区二区| 日韩精品在线观看视频| aaa免费看大片| 免费国产h视频在线观看86| www.狠狠干| 国产一区在线观看视频| 深夜福利亚洲| 亚洲永久字幕| 欧美日韩在线播放一区| 九九在线精品| 中文字幕久久精品| 国产乱国产乱300精品| 丰满少妇一区| 91精品国产经典在线观看| 日韩精品欧美| 国产网站欧美日韩免费精品在线观看| 日本精品专区| 久久香蕉精品| 日韩精品在线看| 欧美日韩国产中字| 国产精久久久久| 日韩a一区二区| 国产高清精品二区| 一区二区三区高清在线| 欧美日韩国产一二| 免费精品国产自产拍在| 日韩精品视频在线看| 亚洲区中文字幕| 一区二区三区精品在线| 国产资源中文字幕| 日韩福利视频导航| 91精品久久久久久蜜臀| 中文字幕乱码在线| 久久精品99国产国产精| www日韩在线观看| 黄色精品在线观看| 一区二区国产在线| 人人做人人澡人人爽欧美| 欧美日韩国产观看视频| 欧美高清一级片在线| 国产日产一区二区| 国产v日产∨综合v精品视频| 国产在线观看精品| 日韩av一区二区在线| 99色在线视频| www.精品视频| 91精品免费观看| 日韩欧美一二三区| 92久久精品| 91极品视频在线观看| 中文字幕精品视频| 欧美日韩国产第一页| 91精品视频在线| 一本久久a久久精品亚洲| 欧美1区免费| 国产色在线视频| 欧美成人精品在线| 日韩av综合在线观看| 亚洲乱码中文字幕综合| 日韩欧中文字幕| 中文精品在线| 日韩在线视频免费观看| 中文字幕高清在线播放| 精品福利二区三区| 中文字幕欧美日韩在线不卡| 日韩欧美国产视频| 国产欧美在线观看| 玖玖在线免费视频| 精品欧美日韩在线| 日本精品在线播放| 一区二区精品区| 亚洲乱码一区av黑人高潮| 欧美中文字幕在线视频| 国产黄色片中文字幕| 国产日韩精品在线看| 不卡专区在线| 国产黄在线观看免费观看不卡| 国产资源中文字幕| 中文字幕五月天| 国产三级做爰在线观看| 国产欧美日韩91| 国产一级片在线| 亚亚洲欧洲精品| 欧美一级手机免费观看片| 日韩在线二区| 色综合天天综合网天天狠天天 | 一区在线视频观看| 快she精品国产999| 色综合婷婷久久| 日韩国产欧美亚洲| 一级片在线免费看| 精品调教chinesegay| 一区视频在线播放| 日韩精品视频在线观看视频| 亚洲狠狠婷婷综合久久久久图片| 亚洲丝袜一区| 亚洲一区在线观看网站| 中文字幕精品视频在线| 91精品国产经典在线观看| 久久久另类综合| 国产免费不卡av| 精品国产91| 中文字幕精品视频在线| 国产欧美日韩不卡| 国产字幕在线看| 欧美性生交大片免费| av中文网站| 一区三区二区视频| 国产裸舞福利在线视频合集| 欧美日韩精品中文字幕| 亚洲女同中文字幕| 国产在线导航| 久久精品国产2020观看福利|