__restrict
와 같은 restrict__declspec 한정자는 __restrict 키워드를 나타내는 기호가 현재 범위에 대 한 별칭이 지정 수 없습니다. __restrict 키워드와 다른에서 restrict __declspec 한정자를 사용할 수 있습니다.
__restrict 키워드에만 변수를 사용할 수 및 __declspec(restrict) 함수 선언 및 정의에 유효 합니다.
때 __restrict 입니다, 컴파일러 변수 없음 alias 속성 전파 되지 않습니다.즉, 사용자에 게 할당 하는 경우는 __restrict 변수 비-__restrict 변수, 컴파일러는 의미 되지 않습니다가 아닌-__restrict 변수 별칭이 지정 되지 않았습니다.이 동작에서 다릅니다는 restrict C99 사양의 키워드입니다.
전체 함수의 동작에 영향을, 일반적으로 사용 하는 더 나은 경우는 __declspec 보다는 키워드.
__restrict유사한 restrict C99 사양에서 있지만 __restrict C++ 또는 C 프로그램에서 사용할 수 있습니다.
지원 하지 않습니다 __restrict 에서 C++ 참조 합니다.
[!참고]
또한이 변수를 사용 하는 경우는 volatile (C++) 키워드를 volatile 보다 우선 합니다.
예제
// __restrict_keyword.c
// compile with: /LD
// In the following function, declare a and b as disjoint arrays
// but do not have same assurance for c and d.
void sum2(int n, int * __restrict a, int * __restrict b,
int * c, int * d) {
int i;
for (i = 0; i < n; i++) {
a[i] = b[i] + c[i];
c[i] = b[i] + d[i];
}
}
// By marking union members as __restrict, tell compiler that
// only z.x or z.y will be accessed in any given scope.
union z {
int * __restrict x;
double * __restrict y;
};