__restrict
__declspec
( restrict
) 한정자와 __restrict
마찬가지로 키워드(keyword)(두 개의 선행 밑줄 '_')은 기호가 현재 범위에서 별칭이 지정되지 않음을 나타냅니다. __restrict
키워드(keyword) 다음과 같은 방법으로 한정자와 다릅니다__declspec (restrict)
.
__restrict
키워드(keyword) 변수에서만 유효하며__declspec (restrict)
함수 선언 및 정의에서만 유효합니다.__restrict
는 C99부터 시작하여 모드에서/std:c17
사용할 수/std:c11
있는 C와 유사restrict
하지만__restrict
C++ 및 C 프로그램 모두에서 사용할 수 있습니다.사용하는 경우
__restrict
컴파일러는 변수의 별칭 없음 속성을 전파하지 않습니다. 즉, 변수를__restrict
변수__restrict
가 아닌 변수에 할당하는 경우 컴파일러는 __restrict 아닌 변수의 별칭을 계속 허용합니다. 이는 C99 C 언어restrict
키워드(keyword) 동작과 다릅니다.
일반적으로 전체 함수의 동작에 영향을 주려면 키워드(keyword) 대신 사용합니다__declspec (restrict)
.
이전 버전 _restrict
과의 호환성을 위해 __restrict
컴파일러 옵션 /Za
(언어 확장 사용 안 함) 을 지정하지 않는 한 동의어입니다.
Visual Studio 2015 이상 __restrict
에서는 C++ 참조에서 사용할 수 있습니다.
참고 항목
또한 키워드(keyword) volatile
있는 변수에서 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;
};
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기