程式相容性
程式碼版本可以提供各種不同形式的相容性:原始碼相容性,連結相容性,執行相容性,和程式相容性。這些都是根據C++程式建立各個過程命名的,
1、如果沒有使用者需要重新編譯任何程式碼,那麼程式庫的版本n和版本m就具有原始碼相容性
2、如果沒有使用者需要重新編譯任何目標檔案,那麼版本n和版本m就具有連結相容性
3、如果沒有任何目標檔案等需要重新連結,那麼版本n和版本m程式相容性
4、儘量將重新擴充套件的程式碼隔離成儘可能少的幾個檔案,那麼當程式庫升級的時候,重新編譯的就只會是幾個檔案而已
理論原始碼相容性
原始碼相容性主要指的是由於版本升級導致介面程式碼增加,而如果使用者的執行程式碼的平臺資源緊張的話就會導致使用者不得不重新進行程式碼設計和優化。理論上C++程式庫的每個改變幾乎都具有原始碼不相容性。
實際原始碼相容性
通常實際中,那些既沒有刪除也沒有改變已有功能的更改,在實際中都是原始碼相容。
1、增加一個成員函式
2、授權友元關係
3、放寬成員或者基類的保護級別
4、把先前的外聯函式改變成為行內函數
5、行內函數改變成為外聯
另外,刪除功能的改變往往都是原始碼不相容,藉助於被棄用或者除黑移植技術,使用者可以更容易地處理原始碼不相容性,與其把函式從程式庫中刪除,不如在相應文件中建議不再使用,這樣子可以使得舊的程式可以繼續執行,新編寫的程式將不再使用這個函式。
某個函式即使被棄用了,但它的描述還應該依然在文件中存在,因為有些程式設計師還需要維護使用這個函式的舊程式程式碼。
執行相容性
如果程式庫版本n和早期版本m是執行相容,那麼只要通過再次執行程式,使用版本m的程式就可以得到升級,這裡,為了提供執行相容性使用機制就是動態連結機制。
總結
程式庫開發者應該著重考慮,為他們現在的使用者提供向後相容(相容老的版本),並且預料向前相容性(也就是考慮後面升級擴充套件)。
相關文章
- 微信小程式中的iOS相容性問題微信小程式iOS
- windows10軟體相容性在哪裡調整_win10應用程式怎麼改相容性WindowsWin10
- CUDA常見驅動程式相容性問題一覽
- 相容性(js)JS
- musl libc 與 glibc 在 .NET 應用程式中的相容性
- 老專案升級總結之程式碼相容性檢測
- Windows Server 2016-MS伺服器應用程式相容性列表WindowsServer伺服器
- PostgreSQLOracle相容性之-roundintervalSQLOracle
- 瀏覽器相容性瀏覽器
- win10沒有相容性選項怎麼辦_win10程式屬性中沒有相容性選項的找回步驟Win10
- PostgreSQLOracle相容性-connectby2SQLOracle
- PostgreSQL Oracle 相容性 - connect by 2SQLOracle
- openGauss MySQL相容性增強MySql
- Web前端相容性指南Web前端
- Go mod 相容性問題Go
- 傲嬌的IOS 相容性iOS
- 生物相容性相關知識
- VMware相容性檢查指北
- input file相容性問題
- SpringMVC自定義相容性HandlerSpringMVC
- 軟體相容性測試知識分享,相容性測試有什麼作用?
- 軟體相容性測試怎麼進行?相容性測試有什麼作用?
- 檢測包相容性的方法
- 解決ie相容性問題
- 如何解決WebSocket的相容性Web
- 常見的相容性問題
- TIDB與MYSQL相容性測試TiDBMySql
- 移動端相容性問題
- 軟體相容性測試包含哪幾種型別?相容性測試如何收費?型別
- 軟體相容性測試有什麼作用?相容性測試必備測試工具
- win10 gpedit.msc沒有應用程式相容性選單項怎麼辦Win10
- App Stroe. 相容性文案過長APP
- 前端相容性問題總結前端
- Jersey2.x分支JavaSE相容性Java
- 初識onkeydown及其相容性問題
- PostgreSQLOracle相容性-Analysis函式之keepSQLOracle函式
- OpenHarmony相容性平臺更新上線
- 如何做版本相容性測試