3

对不起,如果我的口音受伤

在 C 编程中,您可以像这样声明一个函数:dennis ritche 2nd ed page 84

 f(register unsigned m,register long n)

大多数书籍都说函数参数的默认存储类型最好是register.

为什么这样?有什么需要?

答案后面的编译器将它们与 cpu 寄存器一起保存,但是

使用寄存器类型时,我没有看到执行速度有任何差异

任何人都可以详细解释为什么以及在何处以及何时在 C 编程中使用寄存器?

谢谢

4

1 回答 1

6

我很想看看哪些书是这么说的。

老实说,在编译器技术的这一点上,几乎没有任何用处来声明带有register修饰符的东西。事实上,许多编译器会简单地把它扔掉,然后做他们想做的任何事情。关键是这在架构、编译器之间变化很大,并且还受到编译器进行的其他优化类型的影响。因此,是否将某些内容存储在寄存器中的选择最好留给编译器来选择,并且register修饰符的使用通常被认为是过时的反模式。

编辑:我错误地记得register是一个限定符(无论如何它不符合类型限定符的使用,所以我应该知道),修复......

于 2012-06-12T14:54:37.147 回答