但是这篇关于msdn的文档的一小部分让我很奇怪.
编译器不接受用户对寄存器变量的请求; [...]但是,与register关键字相关的所有其他语义都得到了尊重.
那些其他语义是什么?
例如,在C中,您不能获取使用register说明符声明的对象的地址.
void foo(void)
{
register int a = 42;
&a; // constraint violation
}
Run Code Online (Sandbox Code Playgroud)
另一个例子,你不能register在文件范围声明中使用:
register int b = 42; // constraint violation
int main(void)
{
}
Run Code Online (Sandbox Code Playgroud)