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
.
我在使用 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
.