我需要写入某些整数类型的单个字节。我应该使用reinterpret_cast
,还是应该使用static_cast
via void*
?
(一个)
unsigned short v16;
char* p = static_cast<char*>(static_cast<void*>(&v16));
p[1] = ... some char value
p[0] = ... some char value
或 (b)
unsigned short v16;
char* p = reinterpret_cast<char*>(&v16);
p[1] = ... some char value
p[0] = ... some char value
根据std::aligned_storage的 static_cast 和 reinterpret_cast 的答案,两者都应该是等价的——
-- 如果 T1 和 T2 都是标准布局类型,并且 T2 的对齐要求不比 T1 严格
我倾向于reinterpret_cast
因为这本质上就是我正在做的事情,不是吗?
还有其他需要考虑的事情吗,特别是我们目前正在编译的版本 Visual-C++ 和 VC8?(仅限 x86 自动取款机。)