제한 키워드에 대한 여러 게시물을 읽었습니다. 그러나 실제로 찾을 수있는 모든 예는 함수와 아마도 단일 값에 대해서만 입력 매개 변수를 참조하는 것처럼 보입니다. 나는 나의 이해를 명확히 할 필요가있다.MSVC++ 키워드 및 로컬 변수를 제한하십시오.
입력 매개 변수와 로컬 변수 모두를 사용하여 키워드의 규칙을 완전히 위반하는 것처럼 보이는 함수를 발견했습니다.
이 함수는 버퍼에 void *를 사용하여 호출되며 포인터는 _restrict (Microsoft Visual C++)로 선언됩니다. 이 함수의 나중에 UCHAR * 유형의 지역 변수 포인터가 선언되고 동일한 제한된 입력 매개 변수 버퍼를 가리 키도록 만듭니다. 여기
내가 이야기하고있는 함수의 심각 아래로 다진 버전에 대한
위의 예는 '제한'의 규칙을 위반 하는가void Foo(int nVersion, int nX, int nY, int nWidth, void * __restrict pBuffer) const
{
// ... blah blah blah
UCHAR * __restrict pBufferPtr = ((UCHAR *) pBuffer) + 10; // Isn't this aliasing?
const void * __restrict pData = (blah blah blah); //... Get from some function call;
memcpy(pBufferPtr, pData, nWidth);
}
?
편집 된 제목과 태그는 일반적으로 C++에는 적용 할 수 없기 때문에 하나의 공급 업체의 확장입니다. – aschepler
왜 이것을 MSVC로 태그합니까? Microsoft는 공식적인 측면에서 MSDN에서 제한 키워드 (C 또는 C++ 중 하나)도 지원하지 않는다고 말합니다 – dhein