将void*转换为char*

Casting void* to char*

本文关键字:char 转换 void      更新时间:2023-10-16

在c++中将void*转换为char*的最好/最安全的方法是什么?

static_cast或reinterpret_cast?

void I2C::Read(void* buffer, DWORD address, UINT size) 
{
    if (_isDeviceAvailable)
    {
        _iicInstance.seekg(address, std::ios_base::beg);
        _iicInstance.read(reinterpret_cast<char *>(buffer), size);
        Gpio::SVSet();
    }

}

static_cast是这里的选择。使用static_cast往返于void*保留地址,参见这里的类似问题。

公认的答案也解释了为什么在类似的情况下不使用reinterpret_cast