2017-02-23 149 views
-2

我有一个unsigned const volatile short int*。我希望它是(x + y),它在定义时设置为0.但是,如果由于某种原因y变为5,我想要unsigned const volatile short int*也改变。如果某事是一个const volatile int,它可以根据变量的状态改变吗?

C这可能吗?

(注:我使用的独立C99模式GNU扩展,和我的意思是它可以用一个功能自动和不改变)

+0

C中的变量不会更新它们的值:没有依赖系统(不像电子表格)。另外,如果你实际上并不希望它是'const',就去掉'const'。并且不'const'矛盾'volatile'? –

+0

指针不是'const'限定的,所以是的,它当然可以被修改。 – Olaf

+0

@WeatherVane不,const与volatile不矛盾。 [它们在C中是正交的](http://stackoverflow.com/questions/4592762/difference-between-const-const-volatile)。 –

回答

1

有没有办法自动进行变量更新基于像其他变量在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; 
} 
0

假设y被声明为

volatile unsigned short int y = -x; 

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

unsigned const volatile short int *p = &y; 

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

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

相关问题