我有一個unsigned const volatile short int*
。我希望它是(x + y),它在定義時設置爲0.但是,如果由於某種原因y變爲5,我想要unsigned const volatile short int*
也改變。如果某事是一個const volatile int,它可以根據變量的狀態改變嗎?
C這可能嗎?
(注:我使用的獨立C99模式GNU擴展,和我的意思是它可以用一個功能自動和不改變)
我有一個unsigned const volatile short int*
。我希望它是(x + y),它在定義時設置爲0.但是,如果由於某種原因y變爲5,我想要unsigned const volatile short int*
也改變。如果某事是一個const volatile int,它可以根據變量的狀態改變嗎?
C這可能嗎?
(注:我使用的獨立C99模式GNU擴展,和我的意思是它可以用一個功能自動和不改變)
有沒有辦法自動進行變量更新基於像其他變量在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
)不駐留在內存中。
C中的變量不會更新它們的值:沒有依賴系統(不像電子表格)。另外,如果你實際上並不希望它是'const',就去掉'const'。並且不'const'矛盾'volatile'? –
指針不是'const'限定的,所以是的,它當然可以被修改。 – Olaf
@WeatherVane不,const與volatile不矛盾。 [它們在C中是正交的](http://stackoverflow.com/questions/4592762/difference-between-const-const-volatile)。 –