我已经读过(这里,例如)register在C++ 11中不推荐使用该关键字.因此,在标准的较新版本中是否存在与此存储类说明符等效的内容,或者它是否由编译器处理?
Sha*_*our 23
我们可以在缺陷报告809中找到弃用寄存器的基本原理:注册关键字的弃用说明(强调我的):
register关键字提供的功能非常少,只提供一个注释表示通常被忽略的提示.它应该在此版本的标准中弃用,将保留的名称释放出来用于未来的标准,就像这次重新使用auto一样无用.
在去除寄存器用于C++ 17被批准在列涅萨会议,但它仍然保留以备将来使用.
register关键字在2011 C++标准中已弃用,因为其效果已隐含在该语言中.它仍然保留供标准未来使用,是时候删除它的退化规范.
由于as-if规则,编译器只需要模拟程序的可观察行为,因此优化器可以通过as-if规则选择将变量保留在寄存器中,如果它不会影响可观察的行为,并且可能会在大多数情况下做出更好的选择,因为它通常有更多信息
另请参阅"注册"C关键字的作用?从gcc邮件列表中,该帖子中的一个回复说:
我认为"register"关键字不会影响gcc中的寄存器分配.为此你必须回到20世纪70年代的编译器.
但是,在gcc扩展中,register关键字仍然有用:gcc与asm结合使用它来实现寄存器变量.
soa*_*dos 15
如果您使用了关键字,那么编译器就不会保证会听你的(在某些情况下,它会保证它会忽略你,就像你拿到了地址一样).
此提示功能现已弃用,并且没有替换(这是标准的.inline asm不是标准的,但可以使用).
| 归档时间: |
|
| 查看次数: |
13563 次 |
| 最近记录: |