我有一个unsigned const volatile short int*
. 我希望它是 (x + y),在定义时设置为 0。但是,我希望如果由于某种原因 y 更改为 5,我也希望unsigned const volatile short int*
更改。
这在C中可能吗?
(注意:我使用的是带有 GNU 扩展的独立 C99 模式,我的意思是它会自动更改,而不是使用函数。)
我有一个unsigned const volatile short int*
. 我希望它是 (x + y),在定义时设置为 0。但是,我希望如果由于某种原因 y 更改为 5,我也希望unsigned const volatile short int*
更改。
这在C中可能吗?
(注意:我使用的是带有 GNU 扩展的独立 C99 模式,我的意思是它会自动更改,而不是使用函数。)
没有办法让变量根据其他变量(如 C 中的变量)自动更新。
与其将 和 的总和存储x
在y
变量中,不如考虑创建一个函数,在需要时重新计算总和。添加应该非常快:
int get_the_sum()
{
return x + y;
}
或者,您可以考虑制作x
和y
成为只能使用 setter 函数更改的静态变量。setter 函数用于更新任何需要更新的变量x
。y
如果不了解您的应用程序的更多信息,很难判断这种方法是否值得。
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
不驻留在内存中。