我正在尝试读取以前在 NVM 闪存上写入的变量的值。
我的代码是:
uintptr_t address = getAddress();
//[MISRA C++ Rule 5-2-8] cast from unsigned int to pointer
uint16_t value = *(reinterpret_cast<uint16_t*>(address));
问题是 MISRA 中不允许从 uintptr_t 转换为指针。有谁知道访问此内存的方法?
我违反了 MISRA 的一项重要规则。使用动态内存(闪存的内容是动态的,因此数据的地址是可变的)。只有当您考虑声明一个指向闪存地址的 const 指针并在写入数据后访问它时才会导致。
如果不打破它们,规则是什么?:)