C / C++ / ObjC / 奇思妙想 · 2024年 3月 17日 0

restrict是如何限定指针访问的?

32 次浏览

restrict在C99标准中引入,用于限定指针的访问方式。目标为了告诉编译器,对于通过restrict修饰的指针所指向的对象,只能通过这个特定的指针来访问,而不能通过其他任何方式。注意,这是以程序员的信用来保证的,编译器利用restrict提示的指针独立性,可进行一些优化。例如memcpy函数:

void *memcpy( void * restrict dest , const void * restrict src, size_t n);

编译器记录变量或者参数信息,不止是变量名和类型,还有修饰符,形如是否静态static, 是否是const, 是否是restrict...在编译代码中,记录到带有restrict修饰的指针,就可以放心大胆做优化设想。