每当变量更改时保存新值

时间:2020-09-09 09:46:55

标签: c++ vector status

我在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 个答案:

答案 0 :(得分:0)

如果您想保留-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的(可疑的)无序写入,程序的行为随后将无法定义。