【发布时间】:2017-06-15 21:59:17
【问题描述】:
我想知道使用 register 关键字有效的变量类型以便快速访问。例如我可以有
register int i;
register char ch;
register float f;
我还想知道我可以在我的程序中声明多少个寄存器变量。
【问题讨论】:
-
这取决于编译器和架构。没有“一般情况”的答案。一些编译器完全忽略
register关键字,即使没有开启任何优化。 -
这个问题只有在特定实现的上下文中才有意义。\
-
寄存器存储说明符最初只适用于 int、char 或指针类型的变量。
-
我认为现代编译器非常聪明,因此它们会隐式优化常用变量以提高速度(快速访问)并将它们放入 CPU 寄存器中。因此,如今优化器非常擅长寄存器分配,以至于程序员通过 register 关键字强制执行其意愿的任何尝试都可能导致悲观情绪,因此编译器会简单地忽略它。现在不使用 SIMPLY PUT:register 关键字。
-
此外,限制变量的范围并将变量声明为
const并最接近使用情况将使编译器能够更好地使用寄存器。
标签: c++ cpu-registers