閱讀Herb Sutter關於最近C++標準會議的博客文章,它注意到std::byte
被添加到C++ 17中。作爲初始閱讀,我有一些擔心,因爲它使用unsigned char
,以避免嚴格的別名規則帶來的複雜性。std ::奇怪平臺上的字節
我最關心的是,它在CHAR_BIT
不是8的平臺上如何工作?我曾與/平臺CHAR_BIT
是16或32(通常是DSP)。鑑於std::byte
是爲了處理「面向字節的內存訪問」,並且大多數人理解字節以指示八位字節(而不是基本字符類型的大小),對於期望這將解決連續8大量的內存?
我已經看到人們只是假設CHAR_BIT
是8(不知道CHAR_BIT
存在...)。一種名爲std::byte
的類型可能會給個人帶來更多混亂。
我想,我所期待的是,他們引入一個類型,允許一致的尋址/訪問所有情況下連續字節。有許多面向八位字節的協議,在所有平臺上保證一次訪問一個八位組的內存或類型是有用的,不管在給定平臺上哪個是CHAR_BIT
等於。
我完全可以理解,想要明確地指出某些東西被用作字節序列而不是字符序列,但它看起來並不像許多其他事物那樣有用。
就標準而言,一個字節有'CHAR_BIT'位。這就是爲什麼'sizeof(char)'總是1,即使在這些DSP上。 – NathanOliver
那些人需要調整他們的期望。或者,更直白地說,不要錯了。 – molbdnilo
如果您擔心某些人可能會錯誤地使用它,那麼在C++中就是這樣。你有更具體的問題嗎? – Barry