![](/img/trans.png)
[英]Turning off the “'register' storage class specifier is deprecated” warning
[英]Compiler behavior and “register storage class specifier is deprecated”
我正在使用-std=c++11
測試一些C ++代碼。 我注意到以前沒見過的警告:
不推薦使用'register'存儲類說明符
標准對此有何看法(除了棄用之外)?
它是實現定義的嗎?
編譯器會將其作為提示並嘗試將值放入寄存器中嗎?
這會最終導致編譯失敗嗎?
也許別的什么?
C ++ 11, [dcl.stc] :
3 -
register
說明符是對實現的暗示,如此聲明的變量將被大量使用。 [ 注意:提示可以忽略,在大多數實現中,如果采用變量的地址,它將被忽略。 不推薦使用此功能(參見D.2)。 - 結束說明 ]
建議刪除register
關鍵字作為存儲說明符,同時將其保留為關鍵字: 刪除不推薦使用register
關鍵字(n4340) 。 這可能會也可能不會在C ++ 1z中實現(暫定的C ++ 17); 它會對與C的兼容性帶來挑戰,其中register
仍然具有語義效果(C register
變量或參數不能采用其地址或受到數組到指針衰減的影響)。
它是實現定義的嗎?
它一直都是。
編譯器會將其作為提示並嘗試將值放入寄存器中嗎?
它是實現定義的。
這會最終導致編譯失敗嗎?
沒有。
編輯也許我誤解了最終編譯失敗的問題。 我認為它意味着當前編譯中的最終失敗。 如果問題是關於register
關鍵字的未來,那么一切皆有可能:我不關心算命。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.