const void 指针的 C++ 语法

标签 c++ arrays void-pointers

在使用 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/

相关文章:

没有第一个的 C++ 可变参数

c++ - C++中赋值语句的求值顺序

arrays - 寻找用于多次存储数组元素的特定总和的算法

javascript - Promise 仅在页面刷新时正确解析

c++ - 将地址转换为长变量结果值?

c++ - 使用 freeglut/glew 在 VS2010 中设置 OpenGL 项目

c++ - 在紧密循环中使用 cin.get()

ruby - 以随机顺序放置 ruby 哈希

c - 访问从 void 指针转换的结构中的 char 指针

c++ - 将子 vector 与 qsort 一起使用