与register关键字相关的其他语义

cru*_*her 6 c c++ msdn

不推荐使用 register关键字,大多数都忽略了它.

但是这篇关于msdn的文档的一小部分让我很奇怪.

编译器不接受用户对寄存器变量的请求; [...]但是,与register关键字相关的所有其他语义都得到了尊重.

那些其他语义是什么?

oua*_*uah 8

例如,在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)