1

我的目标是在 C 中迭代微控制器上的内存,并对每个单元执行两次连续读取操作,测试两者是否为零。我尝试按如下方式执行此操作:

volatile uint8_t* memory = MEMORY_START_ADDR;

for(uint8_t byte = 0; byte < MEM_SIZE_IN_BYTES; byte ++)
{
      if(memory[byte] != 0) do_something();
      if(memory[byte] != 0) do_something();  // check same location again
}

现在我想确保第二次读取操作没有被编译器优化掉。

据我了解,写作volatile uint8_t * memory = ...将对象标记*memory为易失性,因此至少memory[0]不应优化两次访问。这是否也适用于所有连续访问*(memory + byte)

4

0 回答 0