每当变量更改时保存新值

问题描述

我在Visual Studio 2015上使用C ++。我想检查状态变量在这些行中是否发生了变化。如果一切正常,状态始终返回0,否则返回-1。 我的问题是我只在最后一个状态变量上检查 。 我怎么知道某个状态是否为-1?

int function1(ATF *cm33) {

int status;
uint32_t val;

status = cm33->readData32(SAU_CTRL_Mv8,&val);
status = cm33->writeData32(SAU_CTRL_Mv8,0x3);
status = cm33->readData32(SAU_CTRL_Mv8,&val);

return status;  }

解决方法

如果您想保留-1的值以表示任何个状态都不为零,请使用

int status = 0;

之后

status |= cm33->readData32(SAU_CTRL_Mv8,&val);
status |= cm33->writeData32(SAU_CTRL_Mv8,0x3);
status |= cm33->readData32(SAU_CTRL_Mv8,&val);

这的优点是,如果每个状态均为0,则 仅返回0。如果可能的状态值以某种方式更改,则仅添加可能的值即可将程序推入未定义状态。请勿以status = a | b | c;形式的一个表达式编写它,因为由于(通过怀疑的)通过指针对val的(可疑的)无序写入,程序的行为随后将无法定义。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...