每當我需要定義一個文件結構,我使用編譯器特定的命令(如#pragma pack(1)
)來確保我可以安全地讀寫這個文件,而且不需要擔心填充的問題。跨平臺的文件結構處理
但是,還有其他方法可以達到同樣的目標嗎?我不需要對複雜對象進行反序列化,只需要POD類型。
每當我需要定義一個文件結構,我使用編譯器特定的命令(如#pragma pack(1)
)來確保我可以安全地讀寫這個文件,而且不需要擔心填充的問題。跨平臺的文件結構處理
但是,還有其他方法可以達到同樣的目標嗎?我不需要對複雜對象進行反序列化,只需要POD類型。
Boost Serialization Library可能是一個選項,如果你想快速解決問題並且不費吹灰之力。
無法定義跨平臺的二進制格式,該格式總是很好地映射到類型的內存中表示。
定義跨平臺的文件格式有兩個選項:
或者3.你自己做,因爲OP已經在做,但是要確保你爲自己和/或其他人「記錄」了字節順序,字體大小和順序,以便你的格式可以在其他編碼和解碼上平臺。 (我做了很多,但總是發現,對於任何複雜性或預期壽命的事情,我總是會遷移到更標準化的東西。) –
@BenZotto:我不會考慮這種*跨平臺*文件格式。記錄的變量太多了。否則它使用「家釀」序列化庫。 –
你在做什麼關於排序? – JasonD
@JasonD - 目前:沒有。我假設小端。但是,這確實不是平臺獨立的。 – 0xbadf00d