为什么函数的参数是寄存器类型

时间:2012-06-12 06:56:42

标签: c function compiler-construction arguments

抱歉,如果我的口音受伤

在C编程中,您可以声明如下函数: dennis ritche第2版第84页

 f(register unsigned m,register long n)

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

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

回答跟随编译器使用cpu寄存器但

使用寄存器类型

时,我没有看到执行速度有任何差异

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

感谢

1 个答案:

答案 0 :(得分:6)

我有兴趣看看哪些书说这个。

说实话,在这一点上编译器技术的状态,几乎从来没有任何用于使用register修饰符声明某些内容的用法。事实上,许多编译器只会抛弃它,并做任何他们想做的事情。关键在于,这在架构,编译器之间变化很大,并且还受到编译器完成的其他优化的影响。因此,选择是否将某些内容存储在寄存器中是最好留给编译器的选择,register修饰符的使用通常被认为是一种古老的反模式。

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