ein*_*ica 9 c++ byte idiomatic c++17
C++ 17将包括std::byte一种用于一个可原子寻址的存储器单元的类型,在典型的计算机上具有8位.
在这种标准化之前,指向"原始"内存时已经存在一些困境 - 在一方面使用char*/ unsigned char*另一方面void *.现在,void *删除了偏好的原因之一- std::byte没有与a相同的内涵char; 它是关于原始内存,而不是字符.
所以,我的问题是:什么是一个很好的经验法则std::byte,关于何时更喜欢它void *以及什么时候相反?
当然,当你处理旧代码或C代码时,你会受到它所接受的约束; 我主要是指新代码,您可以选择所有类型.
(这是一个潜在的经验法则,浮现在我的头上,没有被任何人宽恕。)
char *一系列文本字符的序列,而不是别的。void *的类型擦除的设置,即当指针指向的数据被输入,但由于某些原因,类型化的指针不得使用,否则无法确定无论是打字或没有。byte *了原始内存为其中有持有任何类型的数据没有它的指示。上面的例外:
void */ char *,否则将使用byte *-,但应byte *尽可能紧密地使用基于-的接口包装它,而不是将其暴露给其余的C ++代码。void * my_custom_malloc(size_t size)- 错误
byte * my_custom_malloc(size_t size) - 正确
struct buffer_t { byte* data; size_t length; my_type_t data_type; }- 错误
struct buffer_t { void* data; size_t length; my_type_t data_type; } - 正确
| 归档时间: |
|
| 查看次数: |
1391 次 |
| 最近记录: |