restrict (C++ AMP)
제한 지정자는 함수 및 람다 선언에 적용할 수 있습니다. 제한 지정자는 C++ AMP(C++ Accelerated Massive Parallelism) 런타임을 사용하는 애플리케이션의 함수 동작 및 함수의 코드에 제한을 적용합니다.
참고 항목
스토리지 클래스 특성의 restrict
__declspec
일부인 키워드(keyword) 대한 자세한 내용은 restrict을 참조하세요.
절은 restrict
다음 형식을 사용합니다.
절 | 설명 |
---|---|
restrict(cpu) |
이 함수는 전체 C++ 언어를 사용할 수 있습니다. restrict(cpu) 함수를 사용하여 선언된 다른 함수만 이 함수를 호출할 수 있습니다. |
restrict(amp) |
이 함수는 C++ AMP를 통해 가속할 수 있는 C++ 언어의 하위 집합만 사용할 수 있습니다. |
restrict(cpu) 및 restrict(amp) 의 시퀀스입니다. |
이 함수는 restrict(cpu) 및 restrict(amp) 둘 다의 제한을 따라야 합니다. 이 함수는 restrict(cpu) , restrict(amp) , restrict(cpu, amp) 또는 restrict(amp, cpu) 를 사용하여 선언된 함수를 통해 호출할 수 있습니다.restrict(A) restrict(B) 형식을 restrict(A,B) 로 작성할 수 있습니다. |
설명
restrict
키워드(keyword) 상황별 키워드(keyword). 제한 지정자인 cpu
및 amp
는 예약어가 아닙니다. 지정자 목록은 확장할 수 없습니다. 절이 없는 restrict
함수는 절이 있는 restrict(cpu)
함수와 동일합니다.
restrict(amp)
절이 있는 함수에는 다음 제한이 적용됩니다.
이 함수는
restrict(amp)
절이 포함된 함수만 호출할 수 있습니다.함수 인라이닝 처리 가능해야 합니다.
함수는 이러한 형식만 포함하는 클래스
float
unsigned int
및double
구조체와, 변수만int
선언할 수 있습니다.bool
은(는) 허용되지만 복합 형식으로 사용하는 경우 4 바이트 정렬이어야 합니다.람다 함수는 참조로 캡처할 수 없으며 포인터를 캡처할 수 없습니다.
참조 및 단일 간접 포인터는 로컬 변수, 함수 인수 및 반환 형식으로만 지원됩니다.
다음은 허용되지 않습니다.
재귀
휘발성 키워드(keyword) 사용하여 선언된 변수입니다.
가상 함수
함수에 대한 포인터
멤버 함수에 대한 포인터
구조체의 포인터
포인터에 대한 포인터
goto
문을.레이블 문
try
,catch
또는throw
문입니다.전역 변수
정적 변수 대신 tile_static 키워드를 사용합니다.
dynamic_cast
캐스트.typeid
연산자asm 선언
vararg
함수 제한에 대한 자세한 내용은 restrict(amp) 제한을 참조 하세요.
예시
다음 예제에서는 절을 사용하는 restrict(amp)
방법을 보여줍니다.
void functionAmp() restrict(amp) {}
void functionNonAmp() {}
void callFunctions() restrict(amp)
{
// int is allowed.
int x;
// long long int is not allowed in an amp-restricted function. This generates a compiler error.
// long long int y;
// Calling an amp-restricted function is allowed.
functionAmp();
// Calling a non-amp-restricted function is not allowed.
// functionNonAmp();
}
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기