如果某物是一个 const volatile int,它能根据变量的状态改变吗?

If something is a const volatile int, can it change based on the status of a variable?

我有一个unsigned const volatile short int*。我希望它是 (x + y),在定义时设置为 0。但是,如果由于某种原因 y 更改为 5,我希望 unsigned const volatile short int* 也更改。

这在 C 中可行吗?

(注意:我使用的是带有 GNU 扩展的独立 C99 模式,我的意思是它会自动更改,而不是使用函数。)

无法像 C 中那样根据其他变量自动更新变量。

与其将 xy 的总和存储在变量中,您应该考虑只创建一个函数,在需要时重新计算总和。添加应该很快:

int get_the_sum()
{
    return x + y;
}

或者,您可以考虑将 xy 设置为只能使用 setter 函数更改的静态变量。 xy 的 setter 函数将负责更新任何需要更新的变量。在不了解您的应用程序的情况下,很难判断这种方法是否值得。

void change_y(int new_y)
{
  y = new_y;
  sum = x + y;
}

假设y声明为

volatile unsigned short int y = -x;

(或等价物),并且 y 的值最初与 5 不同,您可以定义

unsigned const volatile short int *p = &y;

这将满足您提出的要求,尽管它强加了您未指定的条件。除了上面明确给出的那些之外,它还假设您需要更改以响应 y 的变化,但不提及响应 x 的变化的变化意味着指向的值实际上不需要响应 x.

的变化

当然,我倾向于认为这根本不能代表你真正的意思。 不能在C中实现。指针指向内存中的位置,但是x + y等表达式的值不驻留在内存中。