在iPhone开发中使用plain C时,编译器是否将声明为register
的变量放在CPU寄存器中?
答案 0 :(得分:4)
唯一可以确定的方法是查看编译器的文档,如果没有描述register
的作用,那么它可以做任何事情(在标准定义的参数范围内)。
答案 1 :(得分:1)
register
只是编译器的一个建议性提示;它并不能保证变量真正放在寄存器中。
如果没有备用寄存器可用,变量仍然在堆栈中。
答案 2 :(得分:0)
register
关键字不是指CPU的硬件寄存器。它不可能,因为您可以声明任何类型的变量register
,也可以声明那些永远不适合硬件寄存器的类型。
只是与编译器签订合同,你永远不会获取这样一个变量的地址。您的这样的承诺将简化编译器优化的任务。特别是你的变量永远不会别名,更常见的是它不能从直接控制流外部改变。