【问题标题】:When should I use and not use register variables? Is there a drawback? [duplicate]我什么时候应该使用和不使用寄存器变量?有缺点吗? [复制]
【发布时间】:2012-11-12 13:55:16
【问题描述】:

可能重复:
“register” keyword in C?

如果我将几乎所有内容都声明为寄存器变量会怎样?这会加快我的程序是吗?或者有什么缺点。因为我很难选择声明为寄存器变量的变量。

【问题讨论】:

标签: c variables types


【解决方案1】:

您不能获取寄存器变量的地址。

除此之外,编译器擅长寄存器分配,而且您几乎不想自己将变量声明为寄存器(编译器可以随意忽略提示——如果主要编译器假装 register 确实如此,我不会感到惊讶什么都没有,除非被告知不要优化代码)。

【讨论】:

  • 但我在某处读到它会使我的程序更快?现在过时了吗?
  • @vincentbelkin:它没有。寄存器分配是编译器现在做得很好的事情(阅读:比你做的更好)。
  • @vincentbelkin:是的,这些信息已经过时了。在某些情况下,register 关键字甚至可能使程序变慢(如果编译器支持该关键字并且寄存器分配结果是次优的)
  • @BartvanIngenSchenau 谢谢!因为关于 C 的旧书一直在告诉它进行优化。很高兴我选择收拾东西,否则我可能会一直这样做。
  • @vincent - 你不应该读那么老的书!在 PC 上,小心使用 register 可以改进大约 1985 年之前的代码。在那之后,编译器会比人类做得更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-18
  • 1970-01-01
  • 1970-01-01
  • 2012-09-22
  • 2019-11-15
  • 2013-10-01
  • 2019-12-26
相关资源
最近更新 更多