函数中的restrict 是什么意思?解决办法
函数中的restrict 是什么意思?
今天看书,看到一个函数:
其中的restrict是什么意思啊?
百度了下,好像说是不允许传进来的指针为重叠区域,也就是说,调用此函数时,程序员必须要确保pathname和buf所指向的区域没有重叠区域。
------解决方案--------------------
百度上的解释已经很好,http://baike.baidu.com/link?url=9tM1mI7nAdnHdDoa8ZZvet3PBULcXtqdF2Ntjds4O13sLJJESkbr9QZ5S43GFZy1zzqr7GvQCE73ZhllxibkdK
------解决方案--------------------
只限定用于指针类型的,修改该指针所指向内容的操作全部都是基于该指针的,不存在其它进行修改操作的途径。
google下!
------解决方案--------------------
restrict是c的关键词,只能修饰指针类型
大致如你所说,restrict限定的指针,不会出现多个指针指向同一块内存的情况,跟register关键字类似,这个也是提供给编译器优化的,因为保证只有一个指针会指向这块内存,编译器能更高效的进行一些处理而不用担心影响到别的指针
今天看书,看到一个函数:
ssize_t readlink(const char* restrict pathname, char* restrict buf, size_t bufsize)
其中的restrict是什么意思啊?
百度了下,好像说是不允许传进来的指针为重叠区域,也就是说,调用此函数时,程序员必须要确保pathname和buf所指向的区域没有重叠区域。
c
restrict
------解决方案--------------------
百度上的解释已经很好,http://baike.baidu.com/link?url=9tM1mI7nAdnHdDoa8ZZvet3PBULcXtqdF2Ntjds4O13sLJJESkbr9QZ5S43GFZy1zzqr7GvQCE73ZhllxibkdK
------解决方案--------------------
只限定用于指针类型的,修改该指针所指向内容的操作全部都是基于该指针的,不存在其它进行修改操作的途径。
google下!
------解决方案--------------------
restrict是c的关键词,只能修饰指针类型
大致如你所说,restrict限定的指针,不会出现多个指针指向同一块内存的情况,跟register关键字类似,这个也是提供给编译器优化的,因为保证只有一个指针会指向这块内存,编译器能更高效的进行一些处理而不用担心影响到别的指针