티스토리 뷰

리눅스 시스템프로그래밍을 공부하다가


stat 함수에서 매개변수를 restrict라는 한정자를 사용해서 구현해놓았길래 궁금해졌고, 

그에따라 좀 더 조사를 해보았다.


아래는 Wiki에서 말하고 있는 restrict이다.


In the C programming language, as of the C99 standardrestrict is a keyword that can be used in pointer declarations. The restrict keyword is a declaration of intent given by the programmer to the compiler. It says that for the lifetime of the pointer, only it or a value directly derived from it (such as pointer + 1) will be used to access the object to which it points. This limits the effects of pointer aliasing, aiding caching optimizations. If the declaration of intent is not followed and the object is accessed by an independent pointer, this will result in undefined behavior. The existence and use of the restrict keyword in C allows non-obtuse C to achieve the same performance as the same program written in FORTRAN.[1]



요약하면,

C99부터 포인터를 선언할 때, restrict라는 것을 사용할 수 있게 되었다. restrict키워드를 사용하면, 컴파일러에게 더 많은 최적화를 수행해도 된다라고 말해주기 위해 붙여주는 것이다.



댓글