【发布时间】:2013-04-01 06:57:46
【问题描述】:
我想澄清一下关于寄存器变量存储的一点: 有没有办法确保如果我们在代码中声明了一个寄存器变量,它只会存储在一个寄存器中?
#include<iostream>
using namespace std;
int main()
{
register int i = 10;// how can we ensure this will store in register only.
i++;
cout << i << endl;
return 0;
}
【问题讨论】:
-
C 和 C++ 不保证运行程序的硬件甚至具有“寄存器”。这只是对编译器的提示。
-
@StephenCanon 不仅仅是 C 中的一个提示,声明一个变量
register禁止将其地址放在那里。 (就将变量实际放在寄存器中而言,这只是一个提示。) -
对您有帮助吗:Stack Overflohow to know where is the register variable stored? 不是您的答案,但您可能会觉得很有趣
-
更进一步的'你为什么关心评论'。我们可以说编译器将始终将变量存储在寄存器中 - 现在是什么。我们可以说所有简单的局部变量总是存储在一个寄存器中——现在是什么。除非它有一些可见/有用的副作用,否则它没有逻辑意义。就像'pink int i = 2;'请求将变量存储在粉色内存中
标签: c++ inline-assembly cpu-registers