【问题标题】:Save the new value of a variable whenever it changes [closed]每当变量更改时保存变量的新值[关闭]
【发布时间】:2020-09-09 09:46:55
【问题描述】:

我在 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# 语法,因此无法编译。
  • 每次函数调用后检查返回值怎么样?使用不同的变量?根据您的用例,您可能会在出现错误时跳过后续函数调用,或者只是累积调用错误。
  • 不清楚是什么问题。为什么不if (status == 1) { ...} else if (status == 0) { ..}?当然在每次分配到状态之后
  • 很抱歉没有包括我使用的语言。实际上它是 Visual Studio 2015 上的 C++。我已经修改了问题

标签: c++ vector status


【解决方案1】:

如果您想保留 -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 而未定义。

【讨论】:

  • 非常感谢,这就是我要找的。最后我会检查最后一个状态值,如果它是 0,那么之前的所有状态都是 0,否则至少有一个是非空的。
猜你喜欢
  • 2013-02-22
  • 2021-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-01
  • 2023-03-05
  • 1970-01-01
  • 2023-01-25
相关资源
最近更新 更多