restrict type qualifier
2012. 2. 4.
*출처: http://superkkt.com/291 void *memcpy(void *restrict s1, const void *restrict s2, size_t n); 위 선언에서 restrict라는 구문이 있다. 표준 함수들의 선언에 보면 아주 많이 등장을 하는데, 이것은 C99 표준에 추가된 내용으로서 함수 안에서 각각의 인자로 전달된 포인터들이 서로 독립적인 영역을 가르키고 있다는것을 보장해 준다. 위에서 예로 든 memcpy 함수에 전달되는 인자는 서로 중복되는 영역을 포인팅해서는 안된다. 이것을 사용하는 이유는 최적화와 관련이 있다. 바로 포인터가 최적화를 방해하는 요소이기 때문이다. 포인터는 어떠한 곳을 가르키고 있을지 모르기 때문에 컴파일러가 임의로 최적화를 하면 프로그래머가 의도하지 ..