const void 指针的 C++ 语法

C++ syntax for const void pointer

我在使用 const void 指针时需要一些 C++ 语法方面的帮助。

我正在向一个函数传递一个 const void 数组(即我不知道它是什么数据类型)。然后我需要将内存块逐字节复制到本地无符号字符数组(偏移量为 2)。
局部数组在函数外声明,我知道它总是足够大。 这是代码:

void writeFram(const void* data, unsigned int startAddr, size_t size)
{
    i2cBuffer[0] = startAddr >> 8;
    i2cBuffer[1] = startAddr & 0xFF;
    for(unsigned char i=0;i<size;++i)
    {
        i2cBuffer[i+2] = *static_cast<unsigned char*>(data);
    }
}

我得到的错误是:错误:static_cast 从类型 'const void*' 到类型 'unsigned char*' 丢弃限定符

不要抛弃常量:

i2cBuffer[i+2] = *static_cast<const unsigned char*>(data)
//                            ^^^^^

这就是 const_cast 的用途。但你不应该使用它。转换为 const unsigned char * 没有任何问题,因为您要将值复制出来。

当然你也可以用memcpy.