如果某物是一个 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 中那样根据其他变量自动更新变量。
与其将 x
和 y
的总和存储在变量中,您应该考虑只创建一个函数,在需要时重新计算总和。添加应该很快:
int get_the_sum()
{
return x + y;
}
或者,您可以考虑将 x
和 y
设置为只能使用 setter 函数更改的静态变量。 x
和 y
的 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
等表达式的值不驻留在内存中。
我有一个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 函数更改的静态变量。 x
和 y
的 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
等表达式的值不驻留在内存中。