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

问题描述 投票:0回答:1

抱歉,如果我的口音刺痛了

在C编程中,你可以这样声明一个函数: 丹尼斯·里奇第二版第 84 页

 f(register unsigned m,register long n)

大部分书上都说函数参数的默认存储类型最好是

register

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

随后的答案编译器将它们保留在CPU寄存器中但是

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

谁能详细解释一下为什么、何时何地在 C 编程中使用寄存器?

谢谢

c function arguments
1个回答
6
投票

我有兴趣看看哪些书是这么说的。

说实话,就目前的编译器技术而言,使用

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

编辑:我错误地记得

register
是一个限定符(无论如何,它与类型限定符的使用不符,所以我应该知道),已修复...

© www.soinside.com 2019 - 2024. All rights reserved.