【发布时间】:2014-08-28 21:39:25
【问题描述】:
我需要写入某些整数类型的单个字节。我应该使用reinterpret_cast,还是应该通过void* 使用static_cast?
(a)
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
根据static_cast and reinterpret_cast for std::aligned_storage 的answer 两者应该是等价的——
-- 如果 T1 和 T2 都是标准布局类型并且对齐 T2的要求不比T1严格
我倾向于reinterpret_cast,因为这是基本上我正在做的事情,不是吗?
还有其他需要考虑的事情吗,特别是 Visual-C++ 和 VC8,我们目前正在编译的版本? (仅限 x86 atm。)
【问题讨论】:
标签: c++ c++11 reinterpret-cast visual-c++-2005 standard-layout