fwrite是否便攜?我並不是真的面對下面描述的問題,但我想了解C的基本原理。我們假設我們有兩臺機器A8(字節= 8位)和B16(字節= 16位)。fwrite可移植性
下面的代碼會在兩臺機器上產生相同的輸出嗎?我猜A8會產生80位(10個八位位組),而B16會產生160位(20個八位位組)。 我錯了嗎?
如果僅使用uintN_t類型及其在比特長度是獨立於字節的大小將不會出現此問題。但是也許uint8_t在B16上不存在。
這個問題的解決方案是什麼?
我猜建設uint32_t的數組,把該數組在我的字節(帶智能班次,並根據機器的體系口罩),寫這個數組就能解決問題。但是這並不令人滿意。再次假設uint32_t在所有平臺上都存在。填充此數組將非常依賴於當前機器的體系結構。
感謝您的回覆。
「但是也許uint8_t在B16上不存在。」它不能,除了位字段可以比字符小的字符以外沒有其他字符。 – 2012-07-27 09:40:16
'sizeof(char)'是** always ** 1. – 2012-07-27 09:45:06
「我猜A8會產生80個八位字節,而B16會產生160個八位字節,我錯了嗎?是的,它將是80人。160 **位**或10個。 20 **八位組**。 – 2012-07-27 09:54:24