可移植性

老司機的詩和遠方發表於2020-04-06

對於一段程式碼,它的移植性越好,重用性就越好!

可移植性優缺點

可移植性通常會和效率與實現的難易程度相互制約,具體地說,在一個或者多個平臺上容易實現的可移植性程式碼通常都是低效的,通用既低效,專用才高效!這裡就有一個矛盾,可移植性和高效率的矛盾問題,高效率一般可移植性就會差!
常會用
#indef XXXX
……………….
#else
…………………
#endif
條件編譯是針對不同平臺執行不同介面,好處就是高效。因為不同平臺不同介面函式執行速度會有影響!
值得注意一點是,不同的C++編譯器在支援一些高階結構或者特殊結構上是有區別的。

可移植性記憶體空間問題

對於可移植性程式碼而言,一個要特別關注的領域就是記憶體佈局,主要指:物件的大小和排列方式、指標和地址操縱。許多C++程式設計師都可以把可執行程式的地址空間看作是連續的位元組序列,設定為適當值的char*或void*的指標變數都可以取到這些地址。然而平臺不是唯一,也存在不符合這種簡單記憶體佈局模式的平臺。因此,對於依賴於這種佈局模式的程式碼,對這些平臺而言,就是不可移植性。

可移植的資料檔案

主要是平臺檔案一次讀取位元組差別,有的平臺支援一次可讀入多位元組,而有的平臺只能讀入一個位元組,這句造成移植性差。最好的解決方案就是改寫成一次只寫或讀一個位元組。