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