IT開發/UI設計/運營/影視特效培訓機構

400-111-8989

熱門課程

操作技巧:C/C++ 跨平臺I/O

  • 發布:IT培訓
  • 來源:IT學習資料
  • 時間:2018-06-29 17:05

如果你正在寫從文件或網絡讀寫數據的跨平臺c/c++代碼,那么你必須明白有些問題是因語言,編譯器,平臺而不同的。 主要的問題是數據對齊,填充,類型大小,字節順序和默認狀態char是否有符號。

對齊

特定機器上,特定的數據被對齊于特定的邊界。如果數據沒有正確對齊,結果可能是效率降低甚至崩潰。 當你從i/o源讀取數據的時候,確保對齊是正確的。

填充

"填充" 是數據集合中不同元素之間的間隔, 一般是為了對齊而存在。不同編譯器和平臺下,填充的數量可能會不同。?不要假設結構的大小和成員的位置在任何編譯器和平臺下都是相同的。 不要一次性讀取或者寫入一整個結構體,因為寫入的程序可能會使用和讀取的程序不同的填充方式。對于域也同樣適用。

類型大小

不同數據類型的大小隨編譯器和平臺而不同。 在c/c++中, 內置類型的大小完全取決于編譯器(在特定范圍內). 不要讀寫大小不明確的數據類型。也就是說,不要讀寫bool, enum, long, int, short, float, 或者double類型.(譯者注:事實似乎不是這樣,我記得c/c++標準規定了一些數據類型的長度,例如short 2字節,long 4字節等等,在符合標準規定的編譯器上,使用這些類型可以保證跨平臺的正確性)

用這些 替代這些... int8, uint8 char, signed char, unsigned char, enum, bool int16, uint16 short, signed short, unsigned short, enum int32, uint32int, signed int, unsigned int, long, signed long, unsigned long, enum int64, uint64 long, signed long, unsigned long int128, uint128long long, signed long long, unsigned long long float32floatfloat64double

字節順序

字節順序,就是字節在內存中存儲的順序。 不同的處理器存儲多字節數據的順序是不同的。 小端處理器由低到高存儲(換句話說,和書寫的順序相反).。大端處理器由高到低存儲(和書寫順序相同)。如果數值的字節順序和讀寫它的處理器不同,它必須被事先轉化。同時,為了標準化網絡傳輸的字節順序,定義了網絡字節順序。

char - 有符號還是無符號?

一個鮮為人知的事實,char默認可以是有符號的也可以是無符號的-完全取決于編譯器。結果導致你從char轉化為其他類型的時候(比如int),結果會因編譯器而不同。

預約申請免費試聽課

填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

上一篇:內聯函數inline在C++中的用法
下一篇:C++和Java 我們還是比較下

達內it學習路線?如何學好it?

學編程需要什么基礎嗎?

Python、Java、C++該學哪一個

學編程需要什么基礎嗎

  • 掃碼領取資料

    回復關鍵字:視頻資料

    免費領取 達內課程視頻學習資料

  • 視頻學習QQ群

    添加QQ群:1143617948

    免費領取達內課程視頻學習資料

Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

選擇城市和中心
江西省

貴州省

廣西省

海南省

中出人妻中文字幕无码