1
我知道寄存器变量的地址获得在C是不允许的。但为什么这个代码是在C++中编译而不是在c中编译的。
int main()
{
register int a;
printf("%u\n",&a);
}
我知道寄存器变量的地址获得在C是不允许的。但为什么这个代码是在C++中编译而不是在c中编译的。
int main()
{
register int a;
printf("%u\n",&a);
}
关键字register
只是提示编译器。实际上,现在大多数编译器都会忽略它,因为它们包含高级代码以选择最佳寄存器变量候选。
无论何时您获取变量的地址,它通常都会放在堆栈上,尽管事实上您已经使用了register
关键字。
如果我没有记错,MSVC和GCC将允许它。但是Clang会拒绝它。 – Mysticial 2012-01-05 09:24:35
看到这个问题: http://stackoverflow.com/questions/1256246/address-of-register-variable – WeaselFox 2012-01-05 09:25:07
它编译是因为你编译它。我不确定你是什么意思。你问为什么它编译为C++没有错误? – jalf 2012-01-05 09:25:13