restrict
在C99标准中引入,用于限定指针的访问方式。目标为了告诉编译器,对于通过restrict
修饰的指针所指向的对象,只能通过这个特定的指针来访问,而不能通过其他任何方式。注意,这是以程序员的信用来保证的,编译器利用restrict提示的指针独立性,可进行一些优化。例如memcpy函数:
void *memcpy( void * restrict dest , const void * restrict src, size_t n);
编译器记录变量或者参数信息,不止是变量名和类型,还有修饰符,形如是否静态static, 是否是const, 是否是restrict...在编译代码中,记录到带有restrict修饰的指针,就可以放心大胆做优化设想。