在使用 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);
}
}
我得到的错误是:error: static_cast from type 'const void*' to type 'unsigned char*' casts away qualifiers
最佳答案
不要放弃常量:
i2cBuffer[i+2] = *static_cast<const unsigned char*>(data)
// ^^^^^
关于const void 指针的 C++ 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36610996/