I의 구조는 다음과 같습니다`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
은 모두 구조체에 포함 된 포인터가 동일한 처리를 받습니까?
편집 : 구조체에 대한 포인터가 restrict
에드을 얻는 경우에 (내 예제의 경우처럼) 나는, 그 안에 포함 된 다른 포인터뿐만 아니라 제한 될 것이라고 의미 앨리어싱의 수준으로.
'restrict'는 엄격한 앨리어싱이 아닙니다. –
내가 오해 한 것 같습니다. 'restrict'의 목적은 무엇입니까? – rath
'restrict'는 근본적으로 프로그래머가 포인터가 포인터가 가리키는 저장소에 액세스하는 유일한 포인터라는 약속입니다. – gsg