C语言的restrict关键字

2016-07-14  本文已影响255人  YummyDog

简介

restrict是c99标准引入的,它只可以用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式.即它告诉编译器,所有修改该指针所指向内存中内容的操作都必须通过该指针来修改,而不能通过其它途径(其它变量或指针)来修改;这样做的好处是,能帮助编译器进行更好的优化代码,生成更有效率的汇编代码.

由restrict修饰的指针主要用于函数形参,或指向由malloc()分配的内存空间。

通过GCC生成汇编指令的例子来更好的理解这个关键字

其中关键的汇编指令为:
movl (%rdx), %eax
addl %eax, (%rdi)
movl (%rdx), %eax
addl %eax, (%rsi)

总结

restrict关键字声明主要是帮助编译器更好的进行代码优化,实际上并不影响代码的写法。

上一篇下一篇

猜你喜欢

热点阅读