该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
所谓"建议"是指程序员希望编译器将该变量编译为寄存器变量, 而该变量是占用memory还是register依然取决于编译器高不高兴. 这一点和inline有相似之处.
比如我们来看如下代码:
int main(void)
{
register unsigned int a1 = 0;
register unsigned int a2 = 0;
register unsigned int a3 = 0;
register unsigned int a4 = 0;
register unsigned int a5 = 0;
register unsigned int a6 = 0;
register unsigned int a7 = 0;
register unsigned int a8 = 0;
register unsigned int a9 = 0;
register unsigned int b1 = 0;
register unsigned int b2 = 0;
register unsigned int b3 = 0;
register unsigned int b4 = 0;
register unsigned int b5 = 0;
register unsigned int b6 = 0;
register unsigned int b7 = 0;
register unsigned int b8 = 0;
register unsigned int b9 = 0;
return 0;
}
这段代码是可以在IA-32上通过编译的, 而IA-32上的通用寄存器哪有这么多? 编译器真的老老实实地按照我们的想法将定义的这些变量全都编译为寄存器变量吗?