我正在通过K&R阅读并找到关于寄存器变量的小部分,并想知道这里的人是否有一些很好的例子付诸实践.
来自K&R的4.7节:
寄存器声明看起来像
寄存器int x;
注册char c;
要清楚,我只是希望看到一些很酷的代码示例.我(我很确定我)理解主题,所以不要觉得需要输入详细的解释(除非你想).
使用现代编译器时没有很好的寄存器使用示例(阅读:过去15年以上),因为它几乎从来没有任何好处,可以做一些坏事.当你使用寄存器时,你告诉编译器"我知道如何比你更好地优化我的代码",这几乎不是这种情况.使用register时可能会发生以下三种情况之一:
编译器忽略它,这很可能.在这种情况下,唯一的危害是您不能在代码中获取变量的地址.
编译器会尊重您的请求,因此代码运行得更慢.
编译器尊重您的请求,代码运行得更快,这是最不可能的情况.
即使一个编译器在使用寄存器时产生更好的代码,也没有理由相信另一个编译器也会这样做.如果你有一些关键代码,编译器没有很好地优化你最好的选择可能是使用汇编程序,但是当然要做适当的分析来验证生成的代码是否真的是一个问题.
一般来说,我同意罗伯特,但作为任何好的规则,这个也有例外.
如果您在深度嵌入式系统上工作,您可能比编译器更了解如何针对特定硬件体系结构上的特定应用程序优化代码.
但在99%的案例中,罗伯茨的解释也适用于嵌入式词.