c++ - 如何使用 memset 将 volatile 数组设置为零?

标签 c++ arrays volatile memset

volatile uint8_t reset_mask[768] = {0}

现在我在内部操作之一期间将此数组元素的值设置为 1。

在另一个函数调用中,我需要将此数组的所有元素设置为 0。一种方法是使用 for 循环,但我相信分配数组所有元素的更好方法是使用 memset

memset(reset_mask, 0, sizeof(reset_mask));

但我收到此错误:- “从类型 'volatile uint8_t* {aka volatile unsigned char*}' 类型转换为类型 'void*' 抛弃限定符”

如果我们不能在这里使用 memset,有没有更好的方法一次性设置这个 volatile 数组的所有元素?

最佳答案

你“可以”使用 memset 通过 const_cast 消除 volatile ,但它会删除 volatile 语义。所以除非这对你没问题,否则你会被循环版本卡住。除非您的实现为您提供了一个 memset 版本,该版本采用 volatile* 并记录在案以完成您的工作。 (我认为在嵌入式系统之外不太可能,即使在那里也会让我感到惊讶。)

关于c++ - 如何使用 memset 将 volatile 数组设置为零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17144570/

相关文章:

javascript - 将多个 CSS 类存储在一个数组中

c++ - 包含可变结构的 union

c++ - 有没有办法从点云和深度数据构建和存储 3D map ?

arrays - 多对多表组合成数组

arrays - 如何将一个 800 行 25 列的文件存储在一个 N 维数组中?

java - 廉价读写锁中的冗余 volatile ?

c++ - 用于线程控制的 volatile bool 是否被认为是错误的?

java - 相对于其他字段的易变语义

c++ - 返回值的初始化应该忽略自动对象的常量性

c++ - 如何在类中使用 char*