在变量发生更改时保存新值 我在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; }

在变量发生更改时保存新值 我在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; },c++,vector,status,C++,Vector,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。如果可能的状态值以某种方式发生更改,添加这些值可能会将程

如果要保留
-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
进行了未排序的写入,因此程序的行为将无法定义。

请在开始写入之前确定您使用的是哪种语言。这是无效的C#语法,因此不会编译。在每次函数调用后检查返回值如何?使用不同的变量?根据您的使用情况,如果出现错误,您可能会跳过以下函数调用,或者只是累积调用的错误。不清楚问题是什么。为什么不
if(status==1){…}或者if(status==0){…}
?当然,每次分配给Status之后,我都会为没有包括我正在使用的语言而感到抱歉。事实上,它是Visual Studio 2015上的C++。我已经修改了问题谢谢,这就是我想要的。最后,我将检查最后一个状态值,如果它是0,那么之前的所有状态都是0,否则至少有一个是非空的。