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