我有以下結構:`restrict`關鍵字隱含的嚴格別名的級別是什麼?
typedef struct{
int data[LENGTH];
}Data;
,並使用它,像這樣:
Data* dt=CALLOC(...)
int foo(Data* restrict d){
for(...)
d[i]->data[j];
//do stuff with data[]
}
我的問題是:是否從d
去除嚴格別名也影響其成員或做我需要使用restrict
上他們分開?換句話說,restrict
暗示全部是包含在一個struct中的指針是否得到相同的處理?
編輯:通過水平混疊的我的意思是,如果一個指針到一個結構得到restrict
版,將其中包含的任何其它指針被限制,以及(如與我的例子的情況下)。
'restrict'並不完全是嚴格的別名。 – 2013-11-01 16:44:27
看來我誤解了。什麼是「限制」的目的? – rath
'restrict'本質上是程序員的一個承諾,即指針是唯一一個通過它訪問存儲的指針。 – gsg