首页  >  文章  >  后端开发  >  C中的“register”关键字什么时候仅仅是一个建议,什么时候它是一个指令?

C中的“register”关键字什么时候仅仅是一个建议,什么时候它是一个指令?

Barbara Streisand
Barbara Streisand原创
2024-10-24 05:14:30736浏览

When is the

C 中的 Register 关键字:揭示差异

在 C 中,语法“int x=7”和“register int x=7” ” 可能看起来很相似,但它们表示微妙的区别。 “register”关键字向编译器提示变量应该存储在处理器寄存器中而不是内存中。

这种区别源于存储持续时间的概念。默认情况下,未使用“register”关键字声明的变量存储在内存中,这会导致访问时间变慢。相比之下,标有“register”的变量可能驻留在寄存器中,从而提供更快的访问速度。

但是,需要注意的是,“register”关键字仅仅是一个提示。编译器可能会或可能不会遵守此请求,具体取决于以下因素:

  • 寄存器的可用性:如果所有寄存器都被占用,编译器可能会忽略“寄存器”说明符.
  • 变量的行为:如果频繁修改或通过引用传递变量,编译器可能会决定不将其存储在寄存器中。

Herb Sutter,一位著名的 C 专家在他的书《不存在的关键字(或另一个名字的评论)》中强调了这一点:

“寄存器说明符与自动说明符具有相同的语义......”

这句话意味着“register”关键字的行为类似于“auto”说明符,它指示编译器根据其使用模式确定变量的存储持续时间。

最终,利用“ register”关键字是一种微妙的优化技术,可能并不总是能带来所需的性能增益。然而,它是一个有价值的工具,可以告知编译器程序员关于变量存储的意图。

以上是C中的“register”关键字什么时候仅仅是一个建议,什么时候它是一个指令?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn