我在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; }
答案 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
的(可疑的)无序写入,程序的行为随后将无法定义。