2017-02-23 145 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)不駐留在內存中。

相關問題